a. 通过 SpringFactoriesLoader加载 META-INF/spring.factories文件读取里面的SpringFactoryRunListener配置,获取并创建 SpringApplicationRunListener对象
b. 然后由 SpringApplicationRunListener来发出 starting 消息。
c. 获取执行的命令行参数,并配置当前 SpringBoot 应用将要使用的 Environment,换句话说就是读取springboot项目外部的配置信息,也就是使用@PropertySource注解引入的外部配置。
d. 完成之后,依然由 SpringApplicationRunListener来发出 environmentPrepared 消息
e. 创建 ApplicationContext
f. 初始化 ApplicationContext,并设置 Environment,加载相关配置等
g. 由 SpringApplicationRunListener来发出 contextPrepared消息,告知SpringBoot 应用使用的 ApplicationContext已准备OK
h. 将各种 beans 装载入 ApplicationContext,继续由 SpringApplicationRunListener来发出 contextLoaded 消息,告知SpringBoot 应用使用的 ApplicationContext已装填OK
i. refresh ApplicationContext,完成IoC容器器可用的最后一步,这个过程就是创建出来了容器里面所有的组件。
j. 由 SpringApplicationRunListener来发出 started 消息
k. 完成最终的程序的启动
l. 由 SpringApplicationRunListener来发出 running 消息,告知程序已运行行起来了了