Welcome 微信登录

首页 / 软件开发 / JAVA / Spring中ApplicationContext的事件机制(一 )

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类。