SpringBoot启动原理
...小于 1 分钟SpringBoot框架
1. 启动 main() 方法
- 应用从
main()
方法启动,并通过SpringApplication.run()
引导应用启动。
2. 创建SpringApplication
- 应用会创建
SpringApplication
对象,推断应用类型(判断是servlet应用,还是reactive应用,或者是不是web应用)、设置启动监听器
3. 准备环境(ConfigurableEnvironment)
- Spring Boot 在启动过程中准备应用环境,加载配置文件、系统环境变量以及命令行参数。
4. 创建并刷新 ApplicationContext
- 创建应用上下文,加载配置类和自动配置类,注册 Bean 并执行依赖注入等初始化操作。
5. 在刷新上下文时启动嵌入式 Web 服务器
- 对于 Web 应用,Spring Boot 会自动启动嵌入式 Web 容器(如 Tomcat)。
6. 发布应用已启动事件
7. 执行 CommandLineRunner 和 ApplicationRunner
- 在应用启动完成后,执行实现了
CommandLineRunner
和ApplicationRunner
接口的初始化逻辑。
8. 发布 ready 事件、应用启动完成
- 触发
ApplicationReadyEvent
,应用进入运行状态,处理业务请求或任务。