- 内容简介
- 前言
- 第 1 章 第一个 Spring Boot 项目
- 第 2 章 集成 MySQL 数据库
- 第 3 章 集成 Spring Data JPA
- 第 4 章 使用 Thymeleaf 模板引擎
- 第 5 章 Spring Boot 事务支持
- 第 6 章 使用过滤器和监听器
- 第 7 章 集成 Redis 缓存
- 第 8 章 集成 Log4j 日志
- 8.3 使用 Log4j 记录日志
- 第 9 章 Quartz 定时器和发送 Email
- 第 10 章 集成 MyBatis
- 第 11 章 异步消息与异步调用
- 第 12 章 全局异常处理与 Retry 重试
- 第 13 章 集成 MongoDB 数据库
- 第 14 章 集成 Spring Security
- 第 15 章 Spring Boot 应用监控
- 第 16 章 集成 Dubbo 和 Zookeeper
- 第 17 章 多环境配置与部署
- 第 18 章 Spring Boot 原理解析
- 参考文献
18.2 SpringApplication 执行流程

在 18.1 节,我们对 SpringApplication 的 run 方法进行了简单的学习,这里再简单总结一下 Spring Boot 启动的完整流程,具体流程如图 18-1 所示。
图 18-1 Spring Boot 启动流程
(1)项目启动时,调用入口类 MySpringBootApplication 的 main 方法。
(2)入口类 MySpringBootApplication 的 main 方法会调用 SpringApplication 的静态方法 run。
(3)在 run 方法中首先创建一个 SpringApplication 对象实例,然后调用 SpringApplication 对象实例的 run 方法。
(4)查询和加载所有的 SpringApplicationListener 监听器。
(5)SpringApplicationListener 监听器调用其 starting 方法,Spring Boot 通知这些 SpringApplicationListener 监听器,马上要开始执行了。
(6)创建和准备 Spring Boot 应用将要使用的 Environment 环境,包括配置要使用的 PropertySource 以及 Profile。
(7)创建和初始化应用上下文 ApplicationContext。这一步只是准备工作,并未开始正式创建。
(8)这一步是最重要的,Spring Boot 会通过 @EnableAutoConfiguration 获取所有配置以及其他形式的 Ioc 容器配置,并加载到已经准备完毕的 ApplicationContext。
(9)主要是调用 ApplicationContextInitializer 类的 initialize 方法对应用上下文进行设置和处理。
(10)调用 ApplicationContext 上下文的 refresh 方法,使 Ioc 容器达到可用状态。
(11)查找当前 ApplicationContext 上下文是否注册 ApplicationRunner 与 CommandLineRunner,如果有,循环遍历执行 ApplicationRunner 和 CommandLineRunner 的 run 方法。
(12)执行 SpringApplicationListener 的 finished 方法,Spring Boot 应用启动完毕。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论