加载流程

  1. ....
  2. public ConfigurableApplicationContext run(String... args) {
  3. ...
  4. try {
  5. ApplicationArguments applicationArguments = new DefaultApplicationArguments(args);
  6. ConfigurableEnvironment environment = prepareEnvironment(listeners, bootstrapContext, applicationArguments);
  7. ....

一层一层 DEBUG

加载顺序

  1. 命令行参数 (加载时优先加载)所有的配置都可以在命令行上进行指定 java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar —server.port=8087 —server.context-path=/abc多个配置用空格分开; —配置项=值
  2. 来自java:comp/env的JNDI属性
  3. Java系统属性(System.getProperties())
  4. 操作系统环境变量
  5. RandomValuePropertySource配置的random.*属性值 由jar包外向jar包内进行寻找 优先加载带profile
  6. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件。
  7. jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件。再加载不带profile
  8. jar包外部的application.properties或application.yml(不带spring.profile)配置文件。
  9. jar包内部的application.properties或application.yml(不带spring.profile)配置文件。
  10. @Configuration注解类上的@PropertySource
  11. 通过SpringApplication.setDefaultProperties指定的默认属性

参考