美文网首页
Application 事件与监听器

Application 事件与监听器

作者: 尚水杨 | 来源:发表于2020-08-04 18:52 被阅读0次

事件的监听

由于有些事件是在ApplicationContext创建前就发生了,所以不可以通过@Bean的方式来注册监听器。
可以通过如下方式:

  1. SpringApplication.addListeners(…​)
  2. SpringApplicationBuilder.listeners(…​)
  3. 在META-INF/spring.factories中配置
org.springframework.context.ApplicationListener=org.ysy.study.springboot.startup.DemoListener

DemoListener代码

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;

public class DemoListener implements ApplicationListener<ApplicationEvent> {
    private Logger logger= LoggerFactory.getLogger(this.getClass());
    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        logger.info("event==> {}",event.toString());
    }
}

事件

当一个Application运行时,会发送如下事件:

  1. ApplicationStartingEvent
    运行run在注册完监听器与初始化器后,处理其他前触发。(测试的时候发现监听不到这个事件,暂时还不知道原因)
  2. ApplicationEnvironmentPreparedEvent
    当Environment已经准备好,在context 创建前。
  3. ApplicationContextInitializedEvent
    在ApplicationContext 创建和ApplicationContextInitializer都被调用后,但是bean definition没有被加载前。
  4. ApplicationPreparedEvent
    bean definition已经加载,但是没有refresh。
  5. ApplicationStartedEvent
    context 已经被refresh, 但是application 和command-line 的runner都没有被调用。
  6. AvailabilityChangeEvent
    带上LivenessState.CORRECT标志,标识应用是活的。
  7. ApplicationReadyEvent
    application 和command-line 的runner都被调用后。
  8. AvailabilityChangeEvent
    带上ReadinessState.ACCEPTING_TRAFFIC标志,标识应用可以提供服务。
  9. ApplicationFailedEvent
    启动过程中,抛异常了。

另外还在如下事件在ApplicationPreparedEvent 之后和ApplicationStartedEvent之前发送

  1. WebServerInitializedEvent
    WebServer已经准备好
    1.1 ServletWebServerInitializedEvent
    servlet 准备好
    1.2 ReactiveWebServerInitializedEvent
    reactive 准备好
  2. ContextRefreshedEvent
    ApplicationContext已经refresh。

相关文章

  • Application 事件与监听器

    事件的监听 由于有些事件是在ApplicationContext创建前就发生了,所以不可以通过@Bean的方式来注...

  • 常用的Swing组件概述

    常用的Swing组件 BorderLayout类的主要成员变量 动作事件监听器与焦点事件监听器

  • Web笔记-Listener

    事件源、事件、监听器 事件源:发生事件的对象 事件:事件封装了事件源,方便监听器的某个方法获取到事件源对象 监听器...

  • 事件驱动模型

    观察者模式与事件驱动模型 观察者模式: 事件驱动模型 2.事件驱动模型 事件源 持有监听器列表,或者各种类型监听器...

  • 基于SpringBoot和注解实现优雅的事件监听器

    1. 了解事件监听器 事件监听器包括3个部分,事件、事件源、事件监听器。 事件,主要用于传递参数,例如用户登录,可...

  • 3-Application事件和监听器

    由于一些事件在ApplicaitonContext创建之前被触发,所以不能通过@Bean注解来注册Listener...

  • laravel Event 事件使用

    Event的使用主要分为三步: ①注册事件监听器映射关系 ②定义监听器 ③触发事件 ①注册事件监听器映射关系 在a...

  • 事件委托

    使用事件委托技术能让你避免对特定的每个节点添加事件监听器;相反,事件监听器是被添加到它们的父元素上。事件监听器会分...

  • SpringBoot--监听器解析

    监听器模式 监听器模式有要素 事件 监听器 广播器 触发机制 系统监听器 监听器 ApplicationListe...

  • day08

    监听器和邮箱服务 第1章 监听器介绍 监听器:监听事件源,根据事件源上发生事件,做出相应的处理。 1.2 监听机制...

网友评论

      本文标题:Application 事件与监听器

      本文链接:https://www.haomeiwen.com/subject/upiwrktx.html