关注
主要步骤总结如下:
1. 从spring.factories配置文件中加载EventPublishingRunListener对象,该对象拥有SimpleApplicationEventMulticaster属性,即在SpringBoot启动过程的不同阶段用来发射内置的生命周期事件;
2. 准备环境变量,包括系统变量,环境变量,命令行参数,默认变量,servlet相关配置变量,随机值以及配置文件(比如application.properties)等;
3. 控制台打印SpringBoot的bannner标志;
3. 根据不同类型环境创建不同类型的applicationcontext容器,因为这里是servlet环境,所以创建的是AnnotationConfigServletWebServerApplicationContext容器对象;
5. 从spring.factories配置文件中加载FailureAnalyzers对象,用来报告SpringBoot启动过程中的异常;
6. 为刚创建的容器对象做一些初始化工作,准备一些容器属性值等,对ApplicationContext应用一些相关的后置处理和调用各个ApplicationContextInitializer的初始化方法来执行一些初始化逻辑等;
7. 刷新容器,这一步至关重要。比如调用bean factory的后置处理器,注册BeanPostProcessor后置处理器,初始化事件广播器且广播事件,初始化剩下的单例bean和SpringBoot创建内嵌的Tomcat服务器等等重要且复杂的逻辑都在这里实现,主要步骤可见代码的注释,关于这里的逻辑会在以后的spring源码分析专题详细分析;
8. 执行刷新容器后的后置处理逻辑,注意这里为空方法;
9. 调用ApplicationRunner和CommandLineRunner的run方法,我们实现这两个接口可以在spring容器启动后需要的一些东西比如加载一些业务数据等;
10. 报告启动异常,即若启动过程中抛出异常,此时用FailureAnalyzers来报告异常;
11. 最终返回容器对象,这里调用方法没有声明对象来接收。
SpringBoot共内置了7个生命周期事件,除了标志的不同启动阶段外,同时一些监听器也会监听相应的生命周期事件从而执行一些启动初始化逻辑
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
转发
04-07 18:41
河北工业大学 计算机类 点赞 评论 收藏
转发
点赞 评论 收藏
转发
牛客热帖
- 1... 想来字节技术实习,看我这篇就够了!——保姆级面经大放送2.0W
- 2... 【0429快问快答】99%牛油的疑惑解答(更新至38个问题9840
- 3... 25届第一份实习怎么找?9469
- 4... 毕业9098
- 5... 0实习经验上岸字节,分享一下过程经验8810
- 6... 【奖】休息放松or学习提升,五一假期和牛牛一起“充充电”🔋7148
- 7... 准备去参加自己的婚礼5920
- 8... 美团后端日常实习一二面(已oc)4933
- 9... 为什么我不建议你学C++后端4795
- 10... 【薪资计算】SS Is All You Need4620
正在热议
# 牛友的五一计划 #
25835次浏览 463人参与
# 市场营销面经 #
1689次浏览 79人参与
# 牛客帮帮团来啦!有问必答 #
415761次浏览 7990人参与
# 晒一晒我的offer #
2857469次浏览 50189人参与
# 互联网公司评价 #
63668次浏览 906人参与
# 提前批真的不会影响正式批吗 #
18238次浏览 229人参与
# 市场营销人求职交流聚集地 #
25474次浏览 577人参与
# 许愿池 #
67103次浏览 1488人参与
# 我的上岸简历长这样 #
142750次浏览 2866人参与
# 如何看待offer收割机的行为 #
197688次浏览 3033人参与
# 国企和大厂硬件兄弟怎么选? #
28659次浏览 553人参与
# 硬件人的春招flag #
14705次浏览 202人参与
# 简历中的项目经历要怎么写 #
383837次浏览 6436人参与
# 非技术岗薪资爆料 #
10491次浏览 206人参与
# 找工作,你会甘心进小厂还是猛冲大厂 #
25052次浏览 252人参与
# 实习想申请秋招offer,能不能argue薪资 #
4591次浏览 70人参与
# 产品实习,你更倾向大公司or小公司 #
31576次浏览 498人参与
# 在国企工作的人,躺平了吗? #
74268次浏览 908人参与
# 浅聊一下我实习的辛苦费 #
71553次浏览 649人参与
# 没有实习经历,还有机会进大厂吗 #
260947次浏览 4914人参与