美文网首页Spring cloud
Spring之事件机制模型

Spring之事件机制模型

作者: Mr_1214 | 来源:发表于2018-12-12 08:07 被阅读31次

概述

spring中的事件驱动模型也叫作发布订阅模式,是观察者模式的一个典型的应用

spring事件模型提供如下的类的概念:

  1. ApplicationListener: ApplicationListener继承自jdk的EventListener,所有的监听器都要实现这个接口,这个接口只有一个onApplicationEvent()方法,该方法接受一个ApplicationEvent或其子类对象作为参数,在方法体中,可以通过不同对Event类的判断来进行相应的处理.当事件触发时所有的监听器都会收到消息。
  2. ApplicationEvent: ApplicationEvent继承自jdk的EventObject,所有的事件都需要继承ApplicationEvent,并且通过source得到事件源.该类的实现类ApplicationContextEvent表示ApplicaitonContext的容器事件
  3. ApplicationEventPublisher: 事件的发布者,封装了事件发布功能方法接口,是Applicationcontext接口的超类
  4. ApplicationEventMulticaster: 属于事件广播器,它的作用是把Applicationcontext发布的Event广播给所有的监听器

事件机制工作流程图

event1.png

ApplicationListener

@FunctionalInterface
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {

    /**
     * 当前事件event发布时触发此方法,此方法用于监听事件的发布
     */
    void onApplicationEvent(E event);

}

ApplicationListener 事件监听器的超级接口,所有事件监听器继承实现与此类

ApplicationEvent

public abstract class ApplicationEvent extends EventObject {

    /** 事件发生的时间 */
    private final long timestamp;

    public ApplicationEvent(Object source) {
        super(source);
        this.timestamp = System.currentTimeMillis();
    }

    public final long getTimestamp() {
        return this.timestamp;
    }

}

ApplicationEvent 事件的超类,所有事件基于此类实现

ApplicationEventPublisher

@FunctionalInterface
public interface ApplicationEventPublisher {

    /**
     * 发布事件
     */
    default void publishEvent(ApplicationEvent event) {
        publishEvent((Object) event);
    }

    /**
     * 发布事件
     */
    void publishEvent(Object event);

}

ApplicationEventPublisher 事件发布功能接口,用于提供发布事件的能力接口,为Applicationcontext接口的超类

ApplicationEventMulticaster

public interface ApplicationEventMulticaster {
    /**
     * 添加给定监听器集合
     */
    void addApplicationListener(ApplicationListener<?> listener);

    /**
     * 添加给定名称的事件监听器
     */
    void addApplicationListenerBean(String listenerBeanName);

    /**
     * 移除给定事件监听器集合
     */
    void removeApplicationListener(ApplicationListener<?> listener);

    /**
     * 移除名称为listenerBeanName的事件监听器
     */
    void removeApplicationListenerBean(String listenerBeanName);

    /**
     * 移除所有事件监听器
     */
    void removeAllListeners();

    /**
     * 事件发布后通知监听器执行onApplicationEvent方法
     */
    void multicastEvent(ApplicationEvent event);

    /**
     * 事件发布后通知监听器执行onApplicationEvent方法
     */
    void multicastEvent(ApplicationEvent event, @Nullable ResolvableType eventType);

}

ApplicationEventMulticaster 持有所有监听器对象,并可以动态增删事件监听器,同时具有在事件发布后广播通知事件监听器。

相关文章

  • Spring之事件机制初始化流程

    描述 在Spring之事件机制模型中我们了解了spring事件机制的模型以及工作流程,下面通过源码分析spring...

  • Spring之事件机制模型

    概述 spring中的事件驱动模型也叫作发布订阅模式,是观察者模式的一个典型的应用 spring事件模型提供如下的...

  • Spring 事件机制概述

    Spring 事件机制是观察者模式的典型应用,本文将由浅入深从观察者模式、java事件机制、Spring事件机制三...

  • Guava中的事件机制以及和Spring事件机制的对比

    在以前的文章中,我们有介绍过Java原生的事件机制和Spring提供的事件机制使用方法: 《Spring事件机制》...

  • 第9章-Spring的事件机制

    Spring 容器提供了事件管理机制,Spring 容器内部很多节点都会发布事件,也支持自定义事件。 一、事件机制...

  • 带你自定义实现Spring事件驱动模型

    Spring 事件驱动模型概念 Spring 事件驱动模型就是观察者模式很经典的一个应用,我们可以通过Spring...

  • Spring boot监听器、启动器、异步调用、bean定义

    Spring boot异步调用 Spring boot的事件监听机制 除了通常的Spring Framework事...

  • Spring事件机制

    1. 使用Spring 事件 首先spring事件分为事件发布者(EventPublisher)、事件监听者(Ev...

  • spring 事件机制

      在软件开发过程中,有时候我们会遇到需要把具体业务解耦出来,让各个模块只负责相应的处理逻辑.比如说,在我们的抽象...

  • Spring事件机制

    事件机制主要由三个部分组成: 事件对象 事件监听者 事件源头 其中它们之间的关系是,监听者会订阅事件源头,事件源头...

网友评论

    本文标题:Spring之事件机制模型

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