spring配置文件加载顺序
1.application.properties加载
Spring Boot启动会扫描以下位置的application.properties或者application.yml文件作为Spring Boot的默认配置文件
bootstrap.yml(bootstrap.properties)与application.yml(application.properties)执行顺序
bootstrap优先级比application更高
application:配置文件这个容易理解,主要用于SpringBoot项目的自动化配置。
bootstrap:配置文件有以下几个应用场景 :
1. 使用SpringCloud Config配置中心时,这时需要在bootstrap配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
2. 一些固定的不能被覆盖的属性;
3. 一些加密/解密的场景。
2.配置文件加载位置
1. file:/config/
2. file:/
3. classpath:/config/
4. classpath:/
springboot会加载所有的配置文件,并按优先级从上到下,将低优先级的配置内容覆盖 -- 高低级可以形成互补
3.外部配置文件
-
开发者工具
Devtools全局配置参数; -
单元测试上的 [
@TestPropertySource](mailto:@TestPropertySource)` 注解指定的参数; -
单元测试上的 [
@SpringBootTest](mailto:@SpringBootTest)` 注解指定的参数;
-
命令行指定的参数,如
java -jar springboot.jar --name="xxx"; -
命令行中的
SPRING_APPLICATION_JSONJSON指定参数, 如java -Dspring.application.json='{"name":"xxx"}' -jar springboot.jar -
ServletConfig初始化参数;
-
ServletContext初始化参数;
-
JNDI参数(如
java:comp/env/spring.application.json); -
Java系统参数(来源:
System.getProperties()); -
操作系统环境变量参数;
-
RandomValuePropertySource 随机数,仅匹配:
ramdom.*; -
JAR包外面的配置文件参数(
application-{profile}.properties(YAML)) -
JAR包里面的配置文件参数(
application-{profile}.properties(YAML)) -
JAR包外面的配置文件参数(
application.properties(YAML)) -
JAR包里面的配置文件参数(
application.properties(YAML)) -
@Configuration (
mailto:@Configuration)配置文件上 @PropertySource(mailto:@PropertySource) 注解加载的参数; -
默认参数(通过
SpringApplication.setDefaultProperties指定);
