springIOC源码接口分析(七):ApplicationEventPublisher

一 定义方法

此接口主要是封装事件发布功能的接口,定义了两个方法:

    /**
     * 通知应用所有已注册且匹配的监听器此ApplicationEvent
     */
    default void publishEvent(ApplicationEvent event) {
        publishEvent((Object) event);
    }

    /**
     * 通知应用所有已注册且匹配的监听器此Event ,
     * 如果这个Event不是一个ApplicationEvent,则其被包裹于PayloadApplicationEvent
     */
    void publishEvent(Object event);

二 ApplicationEvent 事件抽象类

   spring中ApplicationEvent +ApplicationListener 是观察者模式的一种实现。

public abstract class ApplicationEvent extends EventObject {

    /** use serialVersionUID from Spring 1.2 for interoperability. */
    private static final long serialVersionUID = 7099057708183571937L;

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


    // 构造器
    public ApplicationEvent(Object source) {//发生事件的对象
        super(source);
        this.timestamp = System.currentTimeMillis();
    }

    public final long getTimestamp() {
        return this.timestamp;
    }
}
ApplicationEvent类继承了EventObject类 ,构造器中的source都是父类的不需要序列化的属性,添加了自身的事件发生时间的属性

 transient作用: https://www.cnblogs.com/chenpi/p/6185773.html

三 spring内置事件

三 ApplicationListener 监听器接口

三 应用

猜你喜欢

转载自www.cnblogs.com/houzheng/p/11885272.html