Spring—ApplicationEvent
-
Spring使用ApplicationEvent作为容器管理的bean之间沟通的桥梁,一个bean如果想让其他的bean知道一个核心事件发生了,那么他会作为一个推送者将这个时间推送出去,同样的,如果一个bean想知道其他bean发生了什么事件,会成为一个监听者。
-
一个bean并不需要显示地订阅自身,它唯一需要做的是实现ApplicationListener<>接口,只要应用上下文环境对事件进行推送,spring就会自动化地推送到对应的ApplicationListener。
总结:事件与监听器-
事件类需要实现继承ApplicationEvent<>,重写构造器,构造器内的成员变量决定了使用事件类的时候可用的资源,如想要记录日志,可以把日志的关键字段放到事件中作为成员变量。
-
事件对应的监听器实现ApplicationListener<>接口,在对应的事件类由applicationContext进行推送时,会调用listener中的onApplicationEvent方法,重写该方法可以对推送的事件进行想要的操作,入参是监听器类中<>的泛型。
-
我们所写的事件类在初始化的时候会有一个Object source对象,这个对象表示事件发生的的对象,不可为空
exm:
继承ApplicationEvent的事件类
-
public class TestEvent<T> extends ApplicationEvent {
private String word;
private Integer no;
/**
* Create a new {@code ApplicationEvent}.
*
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/