springboot系列5,SpringApplication运行阶段

本文详细探讨了SpringApplication的运行阶段,包括加载运行监听器、执行监听器方法、SpringBoot和Spring事件监听、创建应用上下文及Environment。重点介绍了监听器的构造器要求和事件的顺序,以及不同类型的ApplicationContext和Environment的创建。
摘要由CSDN通过智能技术生成

对于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?通过搜索发现,配置文件中只有一个地方用到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值