SpringBoot默认支持properties和yml配置文件的读取,但仅支持指定路径下指定名称的配置文件,当想自定义指定路径加载配置文件时,properties文件使用@PropertySource注解即可,但该注解并不支持加载yml!
老版本的SpringBoot可以通过@ConfigurationProperties的方式指定location
@ConfigurationProperties(locations={"classpath:myconfig.yml"})
1.0.4之后该属性就取消了,亲测可行的解决方式是,将下面这个bean加载到任何一个能被spring初始化的地方即可
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
// yaml.setResources(new ClassPathResource("myconfig.yml"));
yaml.setResources(new FileSystemResource("/data/config/myconfig.yml"));
configurer.setProperties(yaml.getObject());
return configurer;
}
接下来就可以就通过@Value注入,愉快的使用属性啦~~~
如果使用docker部署服务,指定路径读取配置文件,就可以把该路径挂载到宿主机,方便修改配置。