(1)创建 Spring Application 实例,调用 run 方法,同时将启动入口类作 为参数传递进去,由此开始了 Spring Boot 内部相关核心组件以及配置的 启动和加载;
(2)通过 Spring Factories Loader 加载 META-INF/spring.factories 文 件,获取并创建 SpringApplicationRunListener 对象;
(3)然后由 SpringApplicationRunListener 来发出 starting 消息;
(4)创建参数,并配置当前 SpringBoot 应用需要使用的 Environment 实 例;
(5)完成之后,依然由 SpringApplicationRunListener 来发出 environmentPrepared 消息;
(6)创建 Spring 的应用上下文实例:ApplicationContext,初始化该实例 并设置应用环境配置实例:Environment,同时加载相关的配置项;
(7)由 SpringApplicationRunListener 发出 contextPrepared 消息,告 知 SpringBoot 应用当前使用的 ApplicationContext 已准备完毕;
(8)将各种 Bean 组件装载入 Spring 的 IO 容器/应用上下文: ApplicationContext 中,继续由 SpringApplicationRunListener 来发出 contextLoaded 消息,告知 SpringBoot 应用当前使用的 ApplicationContext 已准备完毕;
(9)重新刷新 Refresh Spring 的应用上下文实例:ApplicationContext, 完成 IOC 容器可用的最后一步;
(10)由 SpringApplicationRunListener 发出 started 消息,完成最终的 程序的启动;
(11)由 SpringApplicationRunListener 发出 running 消息,告知程序已 成功运行起来了。
附图1
附图2