[Spring] SpringBoot启动流程

SpringBoot启动流程

实例化流程

  1. 推断应用类型,创建的是REACTIVE应用、SERVlET应用、NONE三种中的一种
  2. 使用SpringFactoreisLoader查找并加载classpath下META-INF/spring.factories文件中所有可用的ApplicationContextInitializer
  3. 使用SpringFactoreisLoader查找并加载classpath下META-INF/spring.factories文件中所有可用的ApplicationContextListener
  4. 推断并设置main方法

run()方法探求

  1. 通过SpringFactoreisLoader加载 classpath下META-INF/spring.factories文件 ,创建并获取 SpringApplicationRunListener对象
  2. 然后由 SrpingApplicationRunListener来发出starting消息
  3. 创建参数,并配置当前SpringBoot应用将要使用的Eviroment
  4. 完成之后,依然由SpringApplicationRunListener来发出enviromentPrepared消息
  5. 创建ApplicationContext
  6. 初始化ApplicationContext, 并设置Environment,加载相关配置等
  7. SpringApplicationRunListener来发出contextPrepared消息,告知SpringBoot应用使用的ApplicationContext准备完毕
  8. 将各种beans装载入ApplicationContext,继续由SpringApplicaitonRunListener发出contextLoaded消息,告知Spring Boot应用使用的Application Context已装填OK
  9. refresh ApplicationContext,完成IOC容器可用的最后一步
  10. 由SpringApplicationRunListener来发出started消息
  11. 调用callRuners(...)方法,让实现了ApplicationRunnerCommandLineRunner接口类的run方法得以执行,用于在Spring应用上下文准备完毕后,执行一些额外操作。从而完成最终的程序启动
  12. SpringApplicationRunListener来发出runing消息,告知程序已运行起来了.
posted @ 2022-05-09 22:12  和森  阅读(51)  评论(0编辑  收藏  举报