springboot 启动加载顺序
概述
Spring Boot的启动加载顺序是一个涉及多个步骤和组件的过程。以下是按照主要阶段和关键步骤划分的Spring Boot启动加载顺序的概述:
-
启动准备阶段:
- 装载核心启动器类:
org.springframework.boot.SpringApplication。 - 通过构造函数创建
SpringApplication实例时,进行一系列的初始化工作,包括:- 判断并设置web环境类型(如SERVLET、REACTIVE等)。
- 使用
SpringFactoriesLoader加载ApplicationContextInitializer和ApplicationListener。 - 推断并设置主配置类(primary sources)。
- 装载核心启动器类:
-
配置加载阶段:
- Spring Boot项目会按照特定的顺序加载配置文件,这些配置文件可以是
application.properties或application.yml格式。 - 配置文件的加载顺序(优先级由高到低):
file:./config/(项目根路径下的config文件夹)file:./(项目根路径)classpath:/config/(类路径下的config文件夹)classpath:/(类路径)
- 外部配置文件的加载方式:
- 命令行参数:可以直接在启动命令后添加启动参数。
spring.config.location:用于指定配置文件的新位置。
- 如果多个文件有相同的key,高优先级的值会覆盖低优先级的值。
- Spring Boot项目会按照特定的顺序加载配置文件,这些配置文件可以是
-
上下文准备阶段:
- 准备并刷新应用上下文(Context)。
- 加载所有的初始化器(如从
META-INF/spring.factories配置文件中加载的)。 - 加载所有的监听器(也是从
META-INF/spring.factories配置文件中加载的)。
-
启动执行阶段:
- 触发所有
CommandLineRunner执行。 - 执行自定义的初始化逻辑(如果有的话)。
- 触发所有
-
完成阶段:
- 启动完成,等待退出。
注意事项
- 带profile的配置文件(如
application-dev.yml)通常具有比不带profile的配置文件(如application.yml)更高的优先级。 - 如果使用Spring Boot的自动配置机制,那么会有一系列自动配置类根据条件进行加载和配置。
- 具体的启动加载顺序可能会因Spring Boot版本和具体配置而有所不同,但整体流程是类似的。
通过清晰地了解Spring Boot的启动加载顺序,可以更好地理解和控制应用的启动过程,以及如何进行配置和扩展。
浙公网安备 33010602011771号