深度解析SpringBoot 2.1.5启动流程
版权申诉
5星 · 超过95%的资源 180 浏览量
更新于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
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜