Spring Boot 可以灵活的在外部配置程序的属性参数,以便在不同的环境中使用相同的代码,如果不同的地方配置有相同的字段,那么高优先级的覆盖低优先级的,下面是Spring Boot可以配置属性的地方,优先级从高
到低
:
- 当
devtools
处于活动状态时,$HOME/.config/spring-boot
文件夹中的Devtools全局设置属性
- 测试类上的
@TestPropertySource
注解 @SpringBootTest
注解中的properties
属性- 命令行参数
SPRING_APPLICATION_JSON
定义的属性(嵌入在env变量或系统属性中的内联JSON)ServletConfig
初始化参数ServletContext
初始化参数- 来自
java:comp/env
的JNDI属性 - Java系统属性
System.getProperties()
- 操作系统环境变量
- RandomValuePropertySource,仅具有
random.*
属性 - jar包
外
的特定配置文件中的属性 (application-{profile}.properties
或application-{profile}.yml
) - jar包
内
的特定配置文件中的属性 (application-{profile}.properties
或application-{profile}.yml
) - jar包
外
的应用程序属性 (application.properties
或application.yml
) - jar包
内
的应用程序属性 (application.properties
或application.yml
) @Configuration
类上的@PropertySource
注解- 默认属性(通过设置
SpringApplication.setDefaultProperties
指定)