Spring启动没有读取环境特定的YAML文件

时间:2016-12-08 07:32:18

标签: spring spring-boot

我开发了一个spring boot rest应用程序,我正在尝试根据值" spring.profiles.active "

读取特定于环境的YAML文件。

我有两个文件

 1. application.yml
 2. application-qa.yml

我在两个文件中都有以下属性

application.yml 文件具有以下属性

comp:
 bu:
  env: local

application-qa.yml 文件具有以下属性

comp:
 bu:
  env: QA

我正在设置spring.profiles.active=qa,如上所述,我希望只加载application-qa.yml,但在这种情况下,application.yml and application-qa.yml都会加载,而我的代码会查找属性< strong> comp.bu.env 它总是得到值

  

本地

我希望我的代码能够从application-qa.yml文件中读取 comp.bu.env 属性。

可以帮助弄清楚我在这里缺少什么吗?

3 个答案:

答案 0 :(得分:2)

似乎没有正确设置spring.profiles.active值,因此您的应用程序正在加载默认的application.yml。 尝试使用设置值 -Dspring.profiles.active=qabootRun命令之前。

e.g。如果您使用的是gradle,则可以执行./gradlew -Dspring.profiles.active=qa bootrun

答案 1 :(得分:1)

comp.bu.env删除application.properties配置。创建单独的配置文件application-dev.yaml并将此配置放在那里:

comp:
 bu:
  env: local

现在,当您使用本地配置spring.profiles.active=qa时。

这将有效地创建开发配置文件。

答案 2 :(得分:0)

感谢您的观点,我已经解决了。 我在application-qa.yml中有 AWS个人资料导致我的QA属性被跳过,因为我提供的个人资料名称是QA。我已将我的属性移到application-qa.yml文件中的AWS:profile之上,然后这些属性开始提升。