SpringBoot-读取自定义配置遇到的一些问题

使用springboot读取自定义配置遇到一些问题,主要归为如下几点:
1.最新的SpringBoot版本@ConfigurationProperties注解不支持location属性,无法指定配置文件路径
2.通过新的方式@PropertySource注解指定配置文件路径后,发现读取到的配置仍旧是默认配置文件的内容
3.读取自定义yml配置文件,使用@PropertySource注解指定配置文件路径后,还是无法读取到内容

问题1:
原因:SpringBoot官方认为在配置类中指定配置文件路径不是一种合理的操作,所以去掉了location属性
解决方式:增加@PropertySource(value="classpath:my.properties"},指定自定义配置文件路径

问题2:
原因:配置注解@ConfigurationProperties(prefix="config.ignore"),指定了prefix="config.ignore",但是applcation.properties配置文件中也存在相同的前缀配置项,SpringBoot读取了默认配置文件applcation.properties中的配置内容
解决方式:修改my.properties中配置项的名称,不与applcation.properties冲突

问题3:
原因:使用@PropertySource注解只能加载yml配置文件,但不能将其配置信息暴露给spring environment
解决方式:

使用@PropertySource注解的同时,另外通过自定义PropertySourcesPlaceholderConfigurer实例将其配置信息暴露给spring environment,具体代码如下:

@Bean  
public static PropertySourcesPlaceholderConfigurer properties() 
{  
    PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();  
    YamlPropertiesFactoryBean yml = new YamlPropertiesFactoryBean();  
    //引入自定义的yml配置文件,暴露给spring environment
    yml.setResources(new FileSystemResource("src/main/resources/yml/my.yml"));
    configurer.setProperties(yml.getObject());  
    return configurer;  
} 


使用springboot读取自定义配置的代码例子如下:

https://github.com/ingorewho/springboot-develope/tree/master/springboot-config



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值