我有3个yml
个文件,即
application-default.yml
- >默认属性应该可用
在所有个人资料中application-dev.yml
- >属性仅适用于开发者
简介application-prod.yml
- >仅适用于prod配置文件的属性当我通过传递-Dspring.profiles.active=dev
启动启动应用程序时,我可以访问application-dev.yml
特定属性。
但是我无法获得application-default.yml
文件中定义的属性。
以下是我的application-dev.yml
文件:
Spring:
profiles:
include: default
spring.profiles: dev
prop:
key:value
答案 0 :(得分:19)
<强> TL; DR 强>
只需将 application-default.yml 文件重命名为 application.yml ,即可按预期工作。
<强>解释强>
根据the description in the docs,当您使用名称与后缀匹配的配置文件运行应用程序时,会激活名为 application- {suffix} .yml 的文件。此外,默认情况下会加载主 application.yml ,因此它是放置所有配置文件的公共属性的理想位置。或者,如果要将文件名保存为application-default.yml,可以将两个配置文件传递给Spring Boot应用程序:
-Dspring.profiles.active=default,dev
这样您将激活两个配置文件,并且将加载两个属性文件。
答案 1 :(得分:4)
我能够解决我的问题,这就是我所做的。
创建了一个文件application-common.yml,将公共属性放在那里。 然后在application- {env} .yml文件中,我把它放在最上面。
spring:
profiles:
include: default
由于我不需要专门加载默认配置文件,这对我有用!!!
答案 2 :(得分:1)
我要做的是:
在application.xml
中放入常用设置,并在此文件中添加:
spring:
profiles:
active: dev, pro, xxx...
您要激活的所有配置文件。
因此您只需编辑此文件即可切换环境。
请记住,将继续处理外部文件,因此您可以在WAR之外保留另一个application.xml
来激活dev
/ pro
/ ...环境,而不是每次都编辑该文件。确保检查文档:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html