Springboot的启动流程

SpringApplication 实例的初始化
1.推断应用的类型:创建的是 REACTIVE应用、SERVLET应用、NONE 三种中的某一种
2.使用 SpringFactoriesLoader查找并加载 classpath下 META-INF/spring.factories文件中所有可用的 ApplicationContextInitializer
3.使用 SpringFactoriesLoader查找并加载 classpath下 META-INF/spring.factories文件中的所有可用的 ApplicationListener
4.推断并设置 main方法的定义类

SpringApplication 的run()方法探秘
在这里插入图片描述

1.通过 SpringFactoriesLoader 加载 META-INF/spring.factories 文件,获取并创建 SpringApplicationRunListener 对象
2.然后由 SpringApplicationRunListener 来发出 starting 消息
3.创建参数,并配置当前 SpringBoot 应用将要使用的 Environment
4.完成之后,依然由 SpringApplicationRunListener 来发出 environmentPrepared 消息
5.创建 ApplicationContext
6.初始化 ApplicationContext,并设置 Environment,加载相关配置等
7.由 SpringApplicationRunListener 来发出 contextPrepared 消息,告知SpringBoot 应用使用的 ApplicationContext 已准备OK
8.将各种 beans 装载入 ApplicationContext,继续由 SpringApplicationRunListener 来发出 contextLoaded 消息,告知 SpringBoot 应用使用的 ApplicationContext 已装填OK
9.refresh ApplicationContext,完成IoC容器可用的最后一步
10.由 SpringApplicationRunListener 来发出 started 消息
完成最终的程序的启动
11.由 SpringApplicationRunListener 来发出 running 消息,告知程序已运行起来了

发布了97 篇原创文章 · 获赞 59 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/b1303110335/article/details/104876671
今日推荐