Profile上的Spring Autoconfig顺序/优先级

时间:2018-01-02 14:29:33

标签: java spring spring-boot

我刚刚阅读了一些Spring文档,我对autoconfigs的工作方式有疑问。因此,如果我们运行具有特定配置文件的Java应用程序,它将自动使用以以下格式命名的配置文件:

application-{{profileName}}.properties

因此,假设我正在使用配置文件dev和personal运行应用程序。这意味着要运行以下属性文件: application.properties,application-dev.properties和application-personal.properties。我很困惑spring如何确定这些配置文件的优先级。就像,如果我在开发中定义覆盖个人的东西,将使用哪一个?

谢谢!

2 个答案:

答案 0 :(得分:2)

Spring Boot使用您的defaut配置文件默认,然后使用您列出的配置文件顺序覆盖它。

例如,如果您在 application.properties 中指定:

spring.profiles.active=dev,personnal
key1=default-value1
key2=default-value2
key3=default-value3

personnal 个人资料中定义的所有值都将覆盖 dev 默认中的值。

application-dev.properties

key2=dev-value2
key3=dev-value3

application-personnal.properties

key3=personnal-value3

您的应用将匹配这些值:

key1=default-value1
key2=dev-value2
key3=personnal-value3

您还可以在 application-personnal.properties 中使用 spring.profiles.include 来无条件地在 personnal中包含 dev 个人资料< / em>个人资料例如:

spring.profiles.include=dev

此致

答案 1 :(得分:-1)

您可以将application.properties个文件视为默认值的文件&#39;。

在bootstrap上指定配置文件时,例如&#39; dev&#39;首先处理application.properties文件,之后,这些值将被从{{1}导入的值覆盖文件。所以关于'application-personal.properties&#39;的价值观。不是进口的。