前言
每次有人问起SpringBoot的启动顺序是不是又来翻博客了?其实只需要稍微查看Spring的源码即可
步骤
-
SpringBoot的入口
org.springframework.boot.SpringApplication#run(String... args),
这里面实现了SpringBoot程序启动的所有步骤 -
启动事件的顺序可以看监听器的顺序定义:
org.springframework.boot.SpringApplicationRunListeners或者org.springframework.boot.SpringApplicationRunListener
附录
SpringBoot启动顺序
| 创建组件 | 发送事件 | 执行回调 |
|---|---|---|
| DefaultBootstrapContext | BootstrapRegistryInitializer#initialize | |
| SpringApplicationRunListeners | ||
| ApplicationStartingEvent | ||
| ConfigurableEnvironment | ||
| EnvironmentPreparedEvent | ||
| Banner | ||
| ConfigurableApplicationContext | ||
| ContextPreparedEvent | ||
| ConfigurableApplicationContext#refresh | ||
| ContextRefreshedEvent | ||
| ApplicationStartedEvent | ||
| AvailabilityChangeEvent (LivenessState.CORRECT) | ||
| ApplicationRunner#run | ||
| CommandLineRunner#run | ||
| ApplicationReadyEvent | ||
| AvailabilityChangeEvent (ReadinessState.ACCEPTING_TRAFFIC) |










