快速业务通道

Spring中ApplicationContext的事件机制(一 ) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

Spring中ApplicationContext的事件机制(一 )

时间:2011-08-13 blogjava 残梦追月

在Windows编程中,我们常常需要处理各类事件,比如鼠标单击事件、双击事件。在Spring中, ApplicationContext也有发布和监听时间的能力。我们知道,在windows开发中,如果要响应某个事件,我 们只需要编写相应windows消息的响应函数就可以了。比如鼠标单击事件,相应的消息就是 WM_LBUTTONDOWN 。在Spring中也是一样,Spring中ApplicationEvent类及其子类就相当于Windows中的消 息,事件监听器ApplcationListener的实现类就相当于Windows编程中的消息处理函数。

要使用Spring事件处理机制,就必须先定义一个事件(定义一个Windows消息),发布出去后,再定义 一个事件监听器(编写消息处理函数),发布到容器中。这样,当该事件发生后,我们就可以在事件监听 器的onApplcationEvent()方法中处理我们的事件了。

ApplicationEvent类是抽象类,不能被实例化,故Spring中的事件类都是其子类。我们要自定义一个 事件就必须扩展该类,该类的代码如下:

代码  查看源代码copy to clipboard打印

public abstract class ApplicationEvent extends EventObject {    private final long timestamp;    public ApplicationEvent(Object source) {      super(source);      this.timestamp = System.currentTimeMillis();    }    public long getTimestamp() {      return timestamp;    } } public abstract class ApplicationEvent extends EventObject {    private final long timestamp;    public ApplicationEvent(Object source) {      super(source);      this.timestamp = System.currentTimeMillis();    }    public long getTimestamp() {      return timestamp;    } }

如上所示,抽象类ApplicationEvent中timestamp字段存贮事件发生的时间,在该事件发生时(事件类 被实例化),ApplicationEvent会自动的把当前的时间存储到该字段中,在应用中可以通过 getTimestamp()方法获取该时间。如果应用要传递一个对象给监听器,那么可以把要传递的对象作为构造 函数的参数source传递给ApplicationEvent类。

Spring中ApplicationContext的事件机制(一 )(2)

时间:2011-08-13 blogjava 残梦追月

为了监听事件的发生并处理事件,Spring提供了一个接口ApplicationListener,代码如下:

代码  查看源代码copy to clipboard打印

public abstract class ApplicationEvent extends EventObject {    private final long timestamp;    public ApplicationEvent(Object source) {      super(source);      this.timestamp = System.currentTimeMillis();    }    public long getTimestamp() {      return timestamp;    } } public abstract class ApplicationEvent extends EventObject {    private final long timestamp;    public ApplicationEvent(Object source) {      super(source);      this.timestamp = System.currentTimeMillis();    }    public long getTimestamp() {      return timestamp;    } }

当有ApplicationEvent类的子类被发布到ApplicationContext时,如果已经在上下文中部署有实现了 ApplicationListener接口的Bean,那么这个Bean会得到一个通知,方法onApplicationEvent()会被调用 ,并将该事件的实例作为参数传入。与Windows消息处理函数不同的是,这个方法会响应所有的事件。因 此在编写onApplicationEvent()方法时,应当要先判断当前的事件是否是我们要响应的事件。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号