1. 构造SpringApplection的实例,这里又细分为四步:
1.1 判断应用类型是web应用还是servlet应用。这里是根据对应的类是否存在判断的
1.2 创建并初始化ApplectionInitializer,设置到initializers属性中,该步骤调用了getSpringFactoriesInstances函数,是在META-INF/配置文件里获取初始化器,然后实例化、排序后再设置到initializers属性中。
1.3 创建并初始化ApplicationListener,步骤和上一步获取初始化器一样
1.4 推断main方法所在的类。这个东西暂时没什么用。
2. 上述准备工作完成后,就开始调用方法启动容器。
2.1 拿到springboot的监听器并启动,也是从中拿。默认是发布容器启动的监听事件,也可以有程序员自己定义的监听事件。
2.2 准备启动环境,这里包括读取jvm、ServletContxt、properties、yaml文件中的 配置。完成后发布一个环境准备完毕的事件。
2.3 设置不需要jdk缓存beaninfo信息,spring自己会缓存。
2.4 打印控制台图标。
2.5 根据应用类型创建spring容器。
2.6 初始化spring容器。
2.7 刷新容器,这里会解析注解扫描bean对象、实现自动装配和启动tomcat。
2.8 记录启动时间。
相关文章
- 高级java每日一道面试题-2025年01月24日-框架篇[SpringBoot篇]-如何理解 Spring Boot 中的 Starters(启动器) ?-我回答:
- 《Spring框架源码系列》--springboot的启动流程总结
- Spring Boot的自动配置原理及启动流程源码分析
- Android进阶系列之源码分析Activity的启动流程
- SpringBoot 源码解析 (二)----- Spring Boot精髓:启动流程源码分析
- spring mvc控制框架的流程及原理1: 总概及源码分析
- springboot的启动流程源码分析
- 头秃了,二十三张图带你从源码了解Spring Boot 的启动流程~