SpringBoot加载自定义yml文件

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部署服务,指定路径读取配置文件,就可以把该路径挂载到宿主机,方便修改配置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容