Spring配置文件优先级
SpringBoot配置文件优先级
3.2.2官方文档:Spring Boot 允许您外部化您的配置,以便您可以在不同的环境中使用相同的应用程序代码。您可以使用各种外部配置源,包括 Java 属性文件、YAML 文件、环境变量和命令行参数。
Spring Boot 使用一种非常特殊的 PropertySource顺序,旨在允许合理地覆盖值。后面的属性源可以覆盖前面定义的值。按以下顺序考虑来源:
- 默认属性(由设置指定
SpringApplication.setDefaultProperties)。 @PropertySource类上的注释@Configuration。Environment请注意,在刷新应用程序上下文之前,不会将此类属性源添加到中。现在配置某些属性为时已晚,例如在刷新开始之前读取的logging.*和。spring.main.*- 配置数据(例如
application.properties文件)。 RandomValuePropertySource仅在 中具有属性random.*。- 操作系统环境变量。
- Java 系统属性 (
System.getProperties())。 - JNDI 属性来自
java:comp/env. ServletContext初始化参数。ServletConfig初始化参数。- 来自
SPRING_APPLICATION_JSON(嵌入环境变量或系统属性中的内联 JSON)的属性。 - 命令行参数。
properties您的测试的属性。可用于测试应用程序的特定部分的测试@SpringBootTest注释。@DynamicPropertySource测试中的注释。@TestPropertySource对你的测试进行注释。$HOME/.config/spring-boot当 devtools 处于活动状态时目录中的Devtools全局设置属性。
配置数据文件按以下顺序考虑:
- 打包在 jar 内的应用程序属性
application.properties(和 YAML 变体)。 - 特定于配置文件的应用程序属性打包在 jar(
application-{profile}.properties和 YAML 变体)内。 - 打包的 jar(和 YAML 变体)之外的应用程序属性
application.properties。 - 打包的 jar(和 YAML 变体)之外的特定于配置文件的应用程序属性
application-{profile}.properties。