springboot生命周期监听

SpringBoot应用的生命周期包括引导、启动和运行三个阶段,每个阶段都有对应的事件如环境准备、容器准备、容器加载和刷新等。SpringApplicationRunListener是用于监听这些事件的接口,可以自定义实现来干预启动过程。EventPublishingRunListener是默认实现,提供事件发布功能。开发者可以通过在META-INF/spring.factories配置自己的监听器来扩展SpringBoot的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 提出问题:监听springboot应用的生命周期。应用启动之前做什么事情,应用启动的过程中某一刻做了什么事情,应用启动完成后做了什么事情????
  2. 谁来做监听这个事情呢?监听器-SpringApplicationRunListener,这是一个接口
    1. 需要注意的是,SpringApplicationRunListener 是一个接口,需要自己实现相应的方法。在 Spring Boot 中,还提供了一个默认的实现类 EventPublishingRunListener,用于发布事件和调用其他监听器。通常情况下,可以直接基于 EventPublishingRunListener 来实现自定义的应用程序启动监听器。
    2. 也可以自定义SpringApplicationRunListener 接口的实现类。并重写SpringApplicationRunListener 接口的方法
      1. ​​​​​​​自定义SpringApplicationRunListener监听事件
        1. 编写SpringApplicationRunListener 实现类
        2. 在 (resources文件下)META-INF/spring.factories 中配置 org.springframework.boot.SpringApplicationRunListener=自己的Listener,还可以指定一个有参构造器,接受两个参数(SpringApplication application, String[] args)
        3. springboot 在spring-boot.jar中配置了默认的 Listener
  3. springboot应用生命周期主要分为哪几部分(可以通过监听器来观察和干预 Spring Boot 在不同阶段的生命周期事件
    1. /**
       * Listener先要从 META-INF/spring.factories(这个就是查找你自定义SpringApplicationRunListener 实现类 读到
       *
       * 1、引导: 利用 BootstrapContext 引导整个项目启动
       *      starting:应用开始,SpringApplication的run方法一调用,只要有了 BootstrapContext 就执行
       *      environmentPrepared:环境准备好(把启动参数等绑定到环境变量中),但是ioc还没有创建;【调一次】
       * 2、启动
       *      contextPrepared:ioc容器创建并准备好,但是sources(主配置类)没加载。并关闭引导上下文;组件都没创建  【调一次】
       *      contextLoaded:ioc容器加载。主配置类加载进去了。但是ioc容器还没刷新(我们的bean没创建)。
       *      =======截止以前,ioc容器里面还没造bean呢=======
       *      started: ioc容器刷新了(所有bean造好了),但是 runner 没调用。
       *      ready: ioc容器刷新了(所有bean造好了),所有 runner 调用完了。
       * 3、运行
       *     以前步骤都正确执行,代表容器running。
       */
  4. 就记住,springboot应用生命周期包括好几个部分,然后这几个部分对应着好几个事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值