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
和森
阅读(
51)
评论()
编辑
收藏
举报