特定环境的spring yml文件
Posted
技术标签:
【中文标题】特定环境的spring yml文件【英文标题】:spring yml file for specific environment 【发布时间】:2016-08-30 05:02:46 【问题描述】:我有 3 个yml
文件,即
application-default.yml
-> 默认属性,应该可用
在所有个人资料中
application-dev.yml
-> 仅适用于开发人员的属性
简介
application-prod.yml
-> 仅适用于产品配置文件的属性
当我通过传递-Dspring.profiles.active=dev
启动我的引导应用程序时,我能够访问application-dev.yml
特定属性。
但我无法获得application-default.yml
文件中定义的属性。
以下是我的application-dev.yml
文件:
Spring:
profiles:
include: default
spring.profiles: dev
prop:
key:value
【问题讨论】:
尝试将 application-default.yml 重命名为 application.yml(这是默认值)。 我试过了,但还是不行。 【参考方案1】: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
这样您将激活两个配置文件并加载两个属性文件。
【讨论】:
感谢 Daniel 的回复,我想这也应该有效,因为我们正在明确激活这两个配置文件。我也会试试这个。 @Daniel Olszewski 是否有任何选项可以命名 yml 或属性文件,而不是 application 。说喜欢datasource.yml
@Arunprasad 是的,但是你必须使用 @PropertySource
注释手动加载它
@Arunprasad 要将application.yml
更改为myapp.yml
(同时保留myapp-profile.yml
),您需要java -Dspring.config.name=myapp ...
但请记住:jar 文件可能包含application.yml
;现在将被忽略;这是一个重大变化;您无法知道新的 jar 版本会出现哪些新设置。【参考方案2】:
我能够解决我的问题,这就是我所做的。
创建了一个文件 application-common.yml,把通用属性放在那里。 然后在 application-env.yml 文件中,我把它放在顶部。
spring:
profiles:
include: default
因为我不需要专门加载默认配置文件,所以这对我有用!!!
【讨论】:
只是好奇,与以前的设置相比有何变化。这看起来类似于您之前在 application-dev.yml 中的内容。 您的意思可能是 application-default.yml?还是你使用了 include: common?【参考方案3】:我做的是:
将常用设置放入application.xml
,并在此文件中添加:
spring:
profiles:
active: dev, pro, xxx...
您要激活的所有配置文件。
这样您只需编辑此文件即可切换环境。
请记住处理外部文件,因此您可以将另一个 application.xml
留在 WAR 之外以激活 dev
/pro
/... 环境,而不是每次都编辑此文件。请务必查看文档:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
【讨论】:
这个例子很奇怪。您要同时激活开发环境和生产环境?要么我遗漏了一些东西,要么答案对于刚刚了解这一点的人来说是不必要的混乱。 这就是例子。应该是dev, dev-db, test-data...
左右。只是想法。以上是关于特定环境的spring yml文件的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot App 无法识别 application.yml 文件中的环境变量
Spring Cloud 配置中心多环境配置bootstrap.yml