朋也的博客 » 首页 » 文章
作者:朋也
日期:2017-11-10
类别:spring-boot学习笔记
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
现在用的spring-boot版本是1.5.x,在1.4.x的时候我记得配置自定义的yml配置文件是用 @ConfigurationProperties(locations={"classpath:myconfig.properties"})
的方式指定的,
现在这个注解里已经没有 locations
这个属性了,网上搜了一圈,说是用 @PropertySource({"classpath:myconfig.properties"})
注解来指定properties配置文件
因为application.properties修改application.yml是完全没有问题的,就想着把 myconfig.properties改myconfig.yml不就好了,就可以用yml格式来配置了,完美!!
事实不是这样的,注入死活不成功,最后在spring-boot的官方文档上找到了答案,详见:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-yaml-shortcomings
YAML files can’t be loaded via the @PropertySource annotation. So in the case that you need to load values that way, you need to use a properties file.
原因很明示了,它不支持呀。。
然后Google了一下 PropertySource yml
还是找到解决办法了
在程序的任何一个位置加上下面这段代码就可以了(要能被spring初始化到的地方)
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource("data.yml"));
configurer.setProperties(yaml.getObject());
return configurer;
}
愉快的写实体类吧