当前位置:   article > 正文

SpringBoot-读取自定义配置遇到的一些问题_@configurationproperties获取yml配置路径不对

@configurationproperties获取yml配置路径不对
使用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,具体代码如下:

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


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

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



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/173012
推荐阅读
相关标签
  

闽ICP备14008679号