Spring笔记之四(Spring Event)

转载 2007年09月25日 14:47:00

转贴处  http://www.blogjava.net/improviser/archive/2007/09/24/147914.html

Spring中提供一些Aware相关的接口,BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,其中最常用到的是ApplicationContextAware。实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入 ApplicationContext的实例。ApplicationContextAware提供了publishEvent()方法,实现Observer(观察者)设计模式的事件传播机,提供了针对Bean的事件传播功能。通过Application.publishEvent方法,我们可以将事件通知系统内所有的ApplicationListener。

Spring事件处理一般过程:

 

 1 public class MessageEvent extends ApplicationEvent {
 2      /**
 3      * 
 4      */
 5     private static final long serialVersionUID = 1L;
 6     private String msg;
 7         public MessageEvent(Object source, String msg) {
 8             super(source);
 9             this.msg = msg;
10         }
11         
12         public String getMessage() {
13             return msg;
14         }
15 
}




 1 public class Publisher implements ApplicationContextAware {
 2 
 3      private ApplicationContext ctx;
 4 
 5         public void setApplicationContext(ApplicationContext applicationContext)
 6                 throws BeansException {
 7             this.ctx = applicationContext;
 8 
 9         }
10 
11         public void publish(String message) {
12             ctx.publishEvent(new MessageEvent(this, message));
13         }
14         
15         public static void main(String[] args) {
16             ApplicationContext ctx = new FileSystemXmlApplicationContext(
17                     "src/applicationContext.xml");
18 
19             Publisher pub = (Publisher) ctx.getBean("publisher");
20             pub.publish("Hello World!");
21             pub.publish("The quick brown fox jumped over the lazy dog");
22         }
23 
24 }



1 public class MessageEventListener implements ApplicationListener {
2 
3       public void onApplicationEvent(ApplicationEvent event) {
4            if(event instanceof MessageEvent) {
5                MessageEvent msgEvt = (MessageEvent)event;
6                System.out.println("Received: " + msgEvt.getMessage());
7            }
8         }
9 }


 

在运行期,ApplicationContext会自动在当前的所有Bean中寻找ApplicationListener接口的实现,并将其作为事件接收对象。当Application.publishEvent方法调用时,所有的ApplicationListener接口实现都会被激发,每个ApplicationListener可根据事件的类型判断是否是自己需要处理的事件,如上面的ActionListener只处理ActionEvent事件。 

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

编写发布事件类Publisher,实现org.springframework.context.ApplicationContextAware接口.

覆盖方法setApplicationContext(ApplicationContext applicationContext)和发布方法publish(Object obj)

定义时间监听类EventListener,实现ApplicationListener接口,实现方法onApplicationEvent(ApplicationEvent event).

spring event示例

  • 2016年12月14日 12:03
  • 44KB
  • 下载

spring中自定义Event事件的使用和浅析

在我目前接触的项目中,用到了许多spring相关的技术,框架层面的spring、spring mvc就不说了,细节上的功能也用了不少,如schedule定时任务、Filter过滤器、 intercep...

spring event-listener模型

spring event listener,使用的场景对吗?欢迎吐槽...

Spring 事件(Application Event)

Spring的事件(Application Event)为Bean与Bean之间的消息通信提供了支持。当一个Bean处理完一个任务后,希望从另一个知道并做相应处理,这个时候我们就需要让另一个Bean监...

Spring事件--Application Event

Spring 的事件为Bean 与 Bean之间的消息通信提供了支持。当一个Bean处理完一个任务之后希望另外一个Bean知道并能做相应的处理,这时候我们就需要让另外一个Bean监听当前Bean所发送...
  • jeofey
  • jeofey
  • 2017年06月12日 10:26
  • 185

Spring 注解事件Event

String event 从Spring的4.2版本后,开始支持注解来进行事件广播接收,这使得我们非常方便 当然了Spring也支持JMS消息中间件,这个就可以做多个系统集成了,感觉有点偏题...

spring中的event listener模式和解耦

event,listener是observer模式一种体现,在spring 3.0.5中,已经可以使用annotation实现event和eventListner里。 我们以spring-webflo...

Spring事件(Application Event)

Spring的事件(Application Event)为Bean与Bean之间的通信提供了支持。当一个Bean处理完一个任务时,希望另一个Bean知道并能做相应的处理,这时我们就需要让另外一个Bea...

【Spring】Spring常用配置-事件(Application Event)

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自【大学之旅_谙忆的博客】 分析Spring的事件(Application Event)为Bean与Bean之间...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring笔记之四(Spring Event)
举报原因:
原因补充:

(最多只允许输入30个字)