- 功能上
bootstrap.yml具有引导的功能,通常定义一些不变的系统性的配置。
application.yml通常定义应用级别的配置,一些可变的内容,如果bootstrap.yml与application.yml具有相同的配置,那么application.yml会覆盖bootstrap.yml的配置。 - 顺序上
在同一目录下,bootstrap.yml会优先于application.yml加载,bootstrap.yml应用于上下文的引导阶段,它是由父ApplicationContext加载。
记载顺序:bootstrap.yml > application.yml > application.properties.
后加载的会覆盖之前加载的配置。
springboot加载配置顺序
1、开发者工具 Devtools
全局配置参数;
2、单元测试上的 @TestPropertySource
注解指定的参数;
3、单元测试上的 @SpringBootTest
注解指定的参数;
4、命令行指定的参数,如 java -jar springboot.jar --name="Java技术栈"
;
5、命令行中的 SPRING_APPLICATION_JSONJSON
指定参数, 如 java -Dspring.application.json='{"name":"Java技术栈"}' -jar springboot.jar
6、ServletConfig
初始化参数;
7、ServletContext
初始化参数;
8、JNDI参数(如 java:comp/env/spring.application.json
);
9、Java系统参数(来源:System.getProperties()
);
10、操作系统环境变量参数;
11、RandomValuePropertySource
随机数,仅匹配:ramdom.*
;
12、JAR包外面的配置文件参数(application-{profile}.properties(YAML)
)
13、JAR包里面的配置文件参数(application-{profile}.properties(YAML)
)
14、JAR包外面的配置文件参数(application.properties(YAML)
)
15、JAR包里面的配置文件参数(application.properties(YAML)
)
16、@Configuration
配置文件上 @PropertySource
注解加载的参数;
17、默认参数(通过 SpringApplication.setDefaultProperties
指定);