Spring Boot 应用程序启动流程分析

  • 时间:
  • 浏览:1
  • 来源:大发彩神下载—大发彩神APP

1、通过 SpringFactoriesLoader 加载 META-INF/spring.factories 文件,获取并创建 SpringApplicationRunListener 对象

④ 推断并设置 main最好的方式的定义类

各个主要步骤我肯能标注在上图之中了,除此之外,我也按照另一方的理解画了5个多流程图如下所示,都可以 对照数字标示看一下:

SpringBoot 5个多多关键元素:

2、因此由 SpringApplicationRunListener 来发出 starting 消息

5个关键的步骤已标注在图中,分别解释如下:

比如,把我们都 儿天天司空见惯的 Spring Boot 应用的启动类来拆解一下写出来可是我之前 :

9、refresh ApplicationContext,完成IoC容器可用的最后一步

SpringApplication 实例的初始化

我们都 儿对照代码来看:

我们都 儿将各步骤总结精炼如下:

11、完成最终的线程的启动

6、初始化 ApplicationContext,并设置 Environment,加载相关配置等

SpringApplication 的run()最好的方式探秘

先看看代码长啥样子:

8、将各种 beans 装载入 ApplicationContext,继续由 SpringApplicationRunListener 来发出 contextLoaded 消息,告知 SpringBoot 应用使用的 ApplicationContext 已装填OK



@SpringBootApplication

SpringApplication 以及 run() 最好的方式

5、创建 ApplicationContext

SpringApplication 这些类应该否有 Spring Boot 框架的“创新”产物了,原始的 Spring 中并这麼 这些类,SpringApplication 中封装了一套 Spring 应用的启动流程,然而这对用户全版透明,因此我们都 儿上手 Spring Boot 时感觉很简洁、轻量。

至此,全流程结束英文英语 !

① 推断应用的类型:创建的是 REACTIVE应用、SERVLET应用、NONE 四种 中的某四种

7、由 SpringApplicationRunListener 来发出 contextPrepared 消息,告知SpringBoot 应用使用的 ApplicationContext 已准备OK

一般来说默认的 SpringApplication 执行流程肯都可以 要能满足大部分需求,因此若用户想干预这些过程,则都可以 通过 SpringApplication 在流程这些地方开启扩展点来完成对流程的扩展,典型的扩展方案那可是我使用 set 最好的方式。

3、创建参数,并配置当前 SpringBoot 应用将要使用的 Environment

12、由 SpringApplicationRunListener 来发出 running 消息,告知线程已运行起来了

10、由 SpringApplicationRunListener 来发出 started 消息

③ 使用 SpringFactoriesLoader查找并加载 classpath下 META-INF/spring.factories文件中的所有可用的 ApplicationListener

4、完成之前 ,依然由 SpringApplicationRunListener 来发出 environmentPrepared 消息

② 使用 SpringFactoriesLoader查找并加载 classpath下 META-INF/spring.factories文件中所有可用的 ApplicationContextInitializer

之前 一拆解后我们都 儿发现,我们都 儿也还要先构造 SpringApplication 类对象,因此调用该对象的 run() 最好的方式。这麼 接下来就讲讲 SpringApplication 的构造过程 以及其 run() 最好的方式的流程,搞清楚了这些,这麼 也就搞清楚了SpringBoot应用是怎么都可以运行起来的!