SpringBoot启动流程
实例化流程
- 推断应用类型,创建的是REACTIVE应用、SERVlET应用、NONE三种中的一种
- 使用
SpringFactoreisLoader
查找并加载classpath下META-INF/spring.factories文件中所有可用的ApplicationContextInitializer
- 使用
SpringFactoreisLoader
查找并加载classpath下META-INF/spring.factories文件中所有可用的ApplicationContextListener
- 推断并设置main方法
run()方法探求
- 通过
SpringFactoreisLoader
加载 classpath下META-INF/spring.factories文件 ,创建并获取 SpringApplicationRunListener对象
- 然后由
SrpingApplicationRunListener
来发出starting消息
- 创建参数,并配置当前SpringBoot应用将要使用的Eviroment
- 完成之后,依然由
SpringApplicationRunListener
来发出enviromentPrepared消息
- 创建ApplicationContext
- 初始化
ApplicationContext
, 并设置Environment,加载相关配置等
- 由
SpringApplicationRunListener
来发出contextPrepared消息,告知SpringBoot应用使用的ApplicationContext准备完毕
- 将各种beans装载入ApplicationContext,继续由
SpringApplicaitonRunListener
发出contextLoaded消息,告知Spring Boot应用使用的Application Context已装填OK
- refresh ApplicationContext,完成IOC容器可用的最后一步
- 由SpringApplicationRunListener来发出started消息
- 调用
callRuners(...)
方法,让实现了ApplicationRunner
和CommandLineRunner
接口类的run方法得以执行,用于在Spring应用上下文准备完毕后,执行一些额外操作。从而完成最终的程序启动
- 由
SpringApplicationRunListener
来发出runing消息,告知程序已运行起来了.
posted @
2022-05-09 22:12
和森
阅读(
52)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix