java - 配置文件上的 Spring 自动配置顺序/优先级

标签 java spring spring-boot

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

application-{{profileName}}.properties

假设我正在使用配置文件 dev 和 individual 运行应用程序。这意味着将运行以下属性文件: application.properties、application-dev.properties 和 application-personal.properties。我对 spring 如何确定这些配置文件的优先级感到困惑。比如,如果我在 dev 中定义了一些东西来覆盖 individual,那么会使用哪一个?

谢谢!

最佳答案

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

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

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

个人配置文件中定义的所有值都将覆盖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来无条件地将dev配置文件包含在personnal<中/em> 配置文件例如:

spring.profiles.include=dev

问候

关于java - 配置文件上的 Spring 自动配置顺序/优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48062754/

相关文章:

java - 如何在网格系统中导航芭比娃娃?

java - 使用@Query和@Modifying的Spring数据JPA PSQLException

spring-boot - Eureka 和 Kubernetes

java - 降低 HashMap 优化逻辑的复杂性 值被替换为包含段落字符串数组的键?

java - APACHE POI 创建损坏的文件 - 无论我做了什么更改

java - 使用 javaconfig 通过 Spring Security 进行摘要身份验证

java - Spring表单标签错误(绑定(bind)结果)

java - Spring PropertyPlaceholderConfigurer 不注入(inject)值

java - SpringFramework 中的 Bean 内的 Bean?

java - 当值不在环境文件中时 spring 属性文件的行为