针对特定环境的spring yml文件

时间:2016-05-04 16:21:00

标签: java spring spring-boot yaml

我有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

3 个答案:

答案 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