一 定义方法
此接口主要是封装事件发布功能的接口,定义了两个方法:
/** * 通知应用所有已注册且匹配的监听器此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 监听器接口
三 应用