ApplicationContext的事件机制

来源:互联网 发布:天猫抢优惠券软件 编辑:程序博客网 时间:2024/05/21 11:35

ApplicationContext的事件机制是观察者设计模式的实现,通过ApplicationEvent和ApplicationListener两个接口可以实现ApplicationContext的事件处理。

事件处理机制:如果在Spring容器里面有ApplicationListener Bean,那么每当ApplicationContext发布ApplicationEvent事件时,都会自动触发ApplicationListener Bean对应的监听器的onApplicationEvent事件

创建ApplicationEvent:自定义继承了ApplicationEvent类的事件类,并创建包含一个Object类型参数的构造器,用于初始化父类:super(source).如:

public class EmailEvent extends ApplicationEvent {    public EmailEvent(Object source) {        super(source) ;    }}

创建ApplicationListener:自定义实现了ApplicationListener的监听器类,并且实现其抽象方法onApplicationEvent(ApplicationEvent event)方法:

public class EmailListener implements ApplicationListener{    public void onApplicationEvent(ApplicationEvent event) {        if(event instanceof EmailEvent) {            System.out.println("当前的事件源来自EmailEvent") ;        }        else {            System.out.println("当前事件源来源未知") ;        }    }}

将自定义的监听器类配置到Spring容器中

<bean class = "com.chengxi.EmailListener" />

这里注意,我们只需要将监听器Bean配置到Spring容器就行了,不需要将事件配置成Bean到Spring容器中

接下来我们就可以测试一下我们自定义的事件机制了:
使用ApplicationContext的publishEvent(event)来发布事件,从而系统自动触发监听器的onApplicationEvent事件

public class Main {    public static void main(String[] args) {        ApplicationContext context = new ApplicationContext() ;        EmailEvent event = new EmailEvent("testEvent") ;        context.publishEvent(event) ;    }}

我们将会在控制台看到输出:当前事件源来自EmailEvent

0 0
原创粉丝点击