深度解析SpringBoot 2.1.5启动流程
版权申诉
5星 · 超过95%的资源 148 浏览量
更新于2024-09-11
收藏 1014KB PDF 举报
"这篇文章深入分析了SpringBoot 2.1.5版本的启动流程源码,从调用SpringApplication的run方法开始,逐步解析启动过程中涉及的关键步骤和配置。"
在Spring Boot应用中,启动一个微服务的核心在于调用`SpringApplication.run()`方法。这个方法是`SpringApplication`类中的静态辅助方法,它接受两个主要参数:`primarySource`(通常是我们定义的启动类)和`args`(应用程序参数)。`primarySource`参数是加载的主要源,可以是任何类型的类,因为这里使用了`Class`作为泛型。`args`参数则通常包含从`main`方法传递进来的命令行参数。
`SpringApplication.run()`方法的内部执行流程大致如下:
1. 创建计时监控:首先,它会创建一个`StopWatch`对象来跟踪应用启动所花费的时间,然后开始计时。
2. 初始化上下文和异常报告:接着,它会初始化`ConfigurableApplicationContext`上下文,以及一个用于收集启动过程中可能出现异常的列表。
3. 设置系统属性:然后,`SpringApplication`会配置系统属性`java.awt.headless`,默认设置为`true`,这会影响图形界面相关操作的行为。
4. 创建运行监听器:接下来,`SpringApplication`会创建所有`SpringApplicationRunListener`监听器,并发布应用启动的事件,这些监听器可以监听到应用的启动、失败等生命周期事件。
5. 初始化默认应用参数:应用的命令行参数会被封装到`ApplicationArguments`对象中,供后续使用。
6. 准备Spring环境:通过`prepareEnvironment()`方法,`SpringApplication`会准备`ConfigurableEnvironment`,这是一个包含应用运行环境的接口,包括属性源、 profiles等信息。在这个过程中,`runListeners.environmentPrepared()`方法会被调用,通知监听器环境已经准备就绪。
7. 配置忽略的Bean:`SpringApplication`还会根据配置信息决定哪些Bean应该被忽略,不参与容器的管理。
8. 创建ApplicationContext:然后,它将创建`ApplicationContext`实例,这通常是`AnnotationConfigApplicationContext`,因为它依赖于注解配置。
9. 注册Bean定义:应用的主类和其他配置类会被注册为Bean定义,这个过程会通过`registerAndRefresh()`方法完成。
10. 启动应用:最后,`ApplicationContext`被启动,所有Bean开始被初始化,同时监听器的`runListeners.started()`方法会被调用,表示应用已经启动。
11. 完成计时:启动完成后,`StopWatch`停止计时,`runListeners.finished()`方法被调用,应用启动的完整时间会被记录。
整个启动流程涉及到Spring Boot的自动配置、条件注解、监听器机制等多个核心特性,对于理解Spring Boot的工作原理以及优化启动性能有着重要的意义。通过对源码的深入研究,开发者可以更好地定制化自己的Spring Boot应用,实现更高效和精细的控制。
2020-06-01 上传
2023-08-22 上传
2023-08-31 上传
2023-06-06 上传
2023-05-25 上传
2023-05-25 上传
2023-05-25 上传
weixin_38590738
- 粉丝: 8
- 资源: 902
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦