深度解析SpringBoot 2.1.5启动流程
版权申诉
5星 · 超过95%的资源 96 浏览量
更新于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 上传
2021-03-23 上传
2024-08-12 上传
2023-08-31 上传
158 浏览量
2013-09-30 上传
weixin_38590738
- 粉丝: 8
- 资源: 902
最新资源
- JavaScript实现的高效pomodoro时钟教程
- CMake 3.25.3版本发布:程序员必备构建工具
- 直流无刷电机控制技术项目源码集合
- Ak Kamal电子安全客户端加载器-CRX插件介绍
- 揭露流氓软件:月息背后的秘密
- 京东自动抢购茅台脚本指南:如何设置eid与fp参数
- 动态格式化Matlab轴刻度标签 - ticklabelformat实用教程
- DSTUHack2021后端接口与Go语言实现解析
- CMake 3.25.2版本Linux软件包发布
- Node.js网络数据抓取技术深入解析
- QRSorteios-crx扩展:优化税务文件扫描流程
- 掌握JavaScript中的算法技巧
- Rails+React打造MF员工租房解决方案
- Utsanjan:自学成才的UI/UX设计师与技术博客作者
- CMake 3.25.2版本发布,支持Windows x86_64架构
- AR_RENTAL平台:HTML技术在增强现实领域的应用