dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>java>java基础>文章内容
Spring中事件处理的小技巧
来源: 作者:    
  中提供一些Aware相关的,BeanFactoryAware、ApplicationContextAware、ResourceLoaderAware、ContextAware等等,其中最常用到的是ApplicationContextAware。实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入ApplicationContext的实例。ApplicationContextAware提供了publishEvent()方法,实现Observer(观察者)设计模式的事件传播机,提供了针对Bean的事件传播功能。通过Application.publishEvent方法,我们可以将通知系统内所有的ApplicationListener。

  Spring处理一般过程:

  ·定义Event类,继承org.springframework.context.ApplicationEvent.

  ·编写发布类Publisher,实现org.springframework.context.ApplicationContextAware.

  ·覆盖方法setApplicationContext(ApplicationContextapplicationContext)和发布方法publish(Objectobj)

  ·定义时间监听类EventListener,实现ApplicationListener,实现方法onApplicationEvent(ApplicationEventevent).

  代码

importorg.springframework.context.ApplicationEvent;

/**
*定义信息
*@authornew
*
*/
publicclassMessageEventextendsApplicationEvent{

 privateStringmessage;

 publicvoidsetMessage(Stringmessage){
  this.message=message;
 }

 publicStringgetMessage(){
  returnmessage;
 }

 publicMessageEvent(Objectsource,Stringmessage){
  super(source);
  this.message=message;
  //TODOAuto-generatedconstructorstub
 }

 privatestaticfinallongserialVersionUID=1L;
}
  代码

importorg.springframework.beans.BeansException;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.ApplicationContextAware;
importorg.springframework.context.support.FileSystemApplicationContext;

publicclassPublisherimplementsApplicationContextAware{

 privateApplicationContextcontext;

 @Override
 publicvoidsetApplicationContext(ApplicationContextarg0)
 throwsBeansException{
  //TODOAuto-generatedmethodstub
  this.context=arg0;
 }

 publicvoidpublish(Stringmessage){
  context.publishEvent(newMessageEvent(this,message));
 }

 publicstaticvoidmain(String[]args){
  ApplicationContextctx=newFileSystemXmlApplicationContext("src/applicationContext.");
  Publisherpub=(Publisher)ctx.getBean("publisher");
  pub.publish("HelloWorld!");
  pub.publish("Thequickbrownfoxjumpedoverthelazydog");
 }
}
  代码

importorg.springframework.context.ApplicationEvent;
importorg.springframework.context.ApplicationListener;

publicclassMessageEventListenerimplementsApplicationListener{

 @Override
 publicvoidonApplicationEvent(ApplicationEventevent){
  //TODOAuto-generatedmethodstub
  if(eventinstanceofMessageEvent){
   MessageEventmsEvent=(MessageEvent)event;
   System.out.println("Received:"+msEvent.getMessage());
  }
 }
}
  在运行期,ApplicationContext会自动在当前的所有Bean中寻找ApplicationListener接口的实现,并将其作为接收对象。当Application.publishEvent方法调用时,所有的ApplicationListener实现都会被激发,每个ApplicationListener可根据事件的类型判断是否是自己需要处理的事件,如上面的ActionListener只处理ActionEvent。

 

 
上一篇:Java 6.0 操作脚本语言基础   下一篇:Java中调用SQL Server存储过程示例
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·JUnit单元测试(2)
·JUnit单元测试(1)
·浅谈在Java语言中究竟是传值还是
·Java 5.0 多线程编程实践
·Java的文件 读和写
·对于JAVA基础测试中常见的异常问
·JAVA程序员面试33问,你能回答多
·Java Reflection (JAVA反射)详解
·JAVA中配置环境变量设置方法大全
·讲述java语言中内部类的研究
·详细解析Java中抽象类和接口的区
·Java开发中的事件驱动模型实例详
  相关文章
·Java 6.0 操作脚本语
·java.lang.OutOfMemoryError学习
·Java实现利用搜索引擎收集网址的
·浅谈Java中利用JCOM实现仿Excel
·基于Java的界面布局DSL的设计与
·JVM(Java 虚拟机)的详细讲解
·为Java程序中添加播放MIDI音乐功
·Java SE 6新特性:Instrumentatio
·Java SE 6 新特性: HTTP 增强
·Java开发中的事件驱动模型实例详
·详细解析Java中抽象类和接口的区
·讲述java语言中内部类的研究
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763