快速业务通道

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

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

Spring中ApplicationContext的事件机制(二 内定事件)

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

在Spring中已经定义了五个标准事件,分别介绍如下:

1)ContextRefreshedEvent:当ApplicationContext初始化或者刷新时触发该事件。

2)ContextClosedEvent:当ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有 单例Bean都被销毁。

3)RequestHandleEvent:在Web应用中,当一个http请求(request)结束触发该事件。

ContestStartedEvent:Spring2.5新增的事件,当容器调用ConfigurableApplicationContext的 Start()方法开始/重新开始容器时触发该事件。

5)   ContestStopedEvent:Spring2.5新增的事件,当容器调用ConfigurableApplicationContext 的Stop()方法停止容器时触发该事件。

下面通过一个例子展示如何处理Spring内定的事件(例程3.8)。创建一个Java工程,添加Spring开发 能力后,新建ioc.test包。在包中新建ApplicationEventListener类,实现ApplicationListener接口, 在onApplicationEvent()方法中添加事件处理代码,如下:

1 package ioc.test; 2 3 //Import省略 4 public class ApplicationEventListener implements ApplicationListener { 5 6   public void onApplicationEvent(ApplicationEvent event) { 7 8     //如果是容器刷新事件 9     if(event instanceof ContextClosedEvent ){ 10       System.out.println(event.getClass().getSimpleName()+" 事件已发生!"); 11     }else if(event instanceof ContextRefreshedEvent ){//如果是容器关闭事件 12       System.out.println(event.getClass().getSimpleName()+" 事件已发生!"); 13     }else if(event instanceof ContextStartedEvent ){ 14       System.out.println(event.getClass().getSimpleName()+" 事件已发生!"); 15     }else if(event instanceof ContextStoppedEvent){ 16       System.out.println(event.getClass().getSimpleName()+" 事件已发生!"); 17     }else{ 18       System.out.println("有其它事件发生:"+event.getClass().getName()); 19     } 20 21   } 22 23 } 24

Spring中ApplicationContext的事件机制(二 内定事件)(2)

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

在Spring配置文件中定义一个Bean,类为ApplicationEventListener,代码如下:

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans ………… 3 4  <bean id="ApplicationEventListener" class="ioc.test.ApplicationEventListener" /> 5 6 </beans> 7

添加含有主方法的TesMain类,在主方法中,调用容器的相应方法,触发Spring内定事件,代码如下:

1 package ioc.test; 2 3 //import省略 4 public class TesMain { 5 6   public static void main(String[] args) { 7     AbstractApplicationContext ac = new ClassPathXmlApplicationContext ("applicationContext.xml"); 8 9 10      //  ac.refresh();//触发ContextRefreshedEvent事件 11     ac.start(); //触发ContextStartedEvent事件 12     ac.stop(); //触发ContextStoppedEvent事件 13     ac.close(); //关闭容器,触发ContextClosedEvent事件 14 15   } 16 } 17

运行主类,控制台输出如下:

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

从例子中可以知道,要注册事件监听器,我们只需要把它配置成一个Bean即可,ApplicationContext 容器会自动将其注册。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号