我开发了一个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 属性。
可以帮助弄清楚我在这里缺少什么吗?
答案 0 :(得分:2)
似乎没有正确设置spring.profiles.active值,因此您的应用程序正在加载默认的application.yml。
尝试使用设置值
-Dspring.profiles.active=qa
在bootRun
命令之前。
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之上,然后这些属性开始提升。