SpringApplication对象是如何构建的? SpringBoot源码(八)
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 本篇接 SpringBoot的启动流程是怎样的?SpringBoot源码(七) 1 温故而知新 温故而知新,我们来简单回顾一下上篇的内容,上一篇我们分析了 SpringBoot的启动流程 ,现将关键步骤再浓缩总结下: 构建 SpringApplication 对象,用于启动SpringBoot; 从 spring.factories 配置文件中加载 EventPublishingRunListener 对象用于在不同的启动阶段发射不同的生命周期事件; 准备环境变量,包括系统变量,环境变量,命令行参数及配置文件(比如 application.properties )等; 创建容器 ApplicationContext ; 为第4步创建的容器对象做一些初始化工作,准备一些容器属性值等,同时调用各个 ApplicationContextInitializer 的初始化方法来执行一些初始化逻辑等; 刷新容器,这一步至关重要,是重点中的重点,太多复杂逻辑在这里实现; 调用 ApplicationRunner 和 CommandLineRunner 的run方法,可以实现这两个接口在容器启动后来加载一些业务数据等; 在SpringBoot启动过程中,每个不同的启动阶段会分别发射不同的内置生命周期事件