加载流程
....
public ConfigurableApplicationContext run(String... args) {
...
try {
ApplicationArguments applicationArguments = new DefaultApplicationArguments(args);
ConfigurableEnvironment environment = prepareEnvironment(listeners, bootstrapContext, applicationArguments);
....
一层一层 DEBUG
加载顺序
- 命令行参数 (加载时优先加载)所有的配置都可以在命令行上进行指定 java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar —server.port=8087 —server.context-path=/abc多个配置用空格分开; —配置项=值
- 来自java:comp/env的JNDI属性
- Java系统属性(System.getProperties())
- 操作系统环境变量
- RandomValuePropertySource配置的random.*属性值 由jar包外向jar包内进行寻找 优先加载带profile
- jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件。
- jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件。再加载不带profile
- jar包外部的application.properties或application.yml(不带spring.profile)配置文件。
- jar包内部的application.properties或application.yml(不带spring.profile)配置文件。
- @Configuration注解类上的@PropertySource
- 通过SpringApplication.setDefaultProperties指定的默认属性
参考