随笔-42  评论-349  文章-4  trackbacks-0

(残梦追月原创,转载注明)

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

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

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

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

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

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




By:残梦追月
posted on 2008-07-24 16:39 残梦追月 阅读(3047) 评论(3)  编辑  收藏 所属分类: Spring

评论:
# re: Spring中ApplicationContext的事件机制(一 ) 2008-07-25 15:50 | 庞永庆
你好 我是出版社的编辑,我看到你博客中的内容,感觉写的非常好。现在有一本SSH的书。如果想把这些内容和更多的人分享,可以和我联系,把这些东西写成书。
我的邮箱:books_522008@yahoo.com.cn
或者加我的MSN:pyq_19852008@hotmail.com  回复  更多评论
  
# re: Spring中ApplicationContext的事件机制(一 ) 2008-07-25 19:51 | 残梦追月
@庞永庆
具体我会联系你的!  回复  更多评论
  
# re: Spring中ApplicationContext的事件机制(一 ) 2014-01-25 11:38 | wxx
学习了  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: