对于SpringApplication准备阶段,实际上就是构造对象阶段,而运行阶段,就是.run。
对于运行阶段的运行流程:
1.加载SpringApplication运行监听器(SpringApplicationRunListeners)
利用spring工厂加载机制,读取SpringApplicationRunListener对象集合,并封装到组合类SpringApplicationRunListeners中。
源码:

标红位置就是获取运行监听器方法,继续往下追溯可发现是通过工厂机制获取的,这里不再赘述。
2.运行SpringApplication运行监听器
监听运行多个状态方法,上源码:
package org.springframework.boot;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
public interface SpringApplicationRunListener {
//Spring应用刚启动
default void starting() {
}
//ConfigurableEnvironment 准备妥当,允许将其调整
default void environmentPrepared(ConfigurableEnvironment environment) {
}
//ConfigurableApplicationContext 准备妥当,允许将其调整
default void contextPrepared(ConfigurableApplicationContext context) {
}
//ConfigurableApplicationContext 已装载,但仍未启动
default void contextLoaded(ConfigurableApplicationContext context) {
}
//ConfigurableApplicationContext已启动,此时Spring bean已初始化完成
default void started(ConfigurableApplicationContext context) {
}
//spring应用正在运行
default void running(ConfigurableApplicationContext context) {
}
//spring应用运行失败
default void failed(ConfigurableApplicationContext context, Throwable exception) {
}
}
3.监听SpringBoot事件、Spring事件
springboot通过SpringApplicationRunListener的实现类EventPublishingRunListener,利用SpringFramework事件API,广播springboot事件。
需要注意的是,spring是通过工厂模式装载监听器的,那就是有可能配置多个监听器,为什么能确定就是EventPublishingRunListener?通过搜索发现,配置文件中只有一个地方用到

本文详细探讨了SpringApplication的运行阶段,包括加载运行监听器、执行监听器方法、SpringBoot和Spring事件监听、创建应用上下文及Environment。重点介绍了监听器的构造器要求和事件的顺序,以及不同类型的ApplicationContext和Environment的创建。
最低0.47元/天 解锁文章
398

被折叠的 条评论
为什么被折叠?



