关灯
开启左侧

Spring框架中有哪些不同类型的事件

[复制链接]
意大利炮 发表于 2018-12-19 11:33:49 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 

Spring的ApplicationContext 提供了支持事件和代码中**的功能。

我们可以创建bean用来监听在ApplicationContext 中发布的事件。ApplicationEvent类和在ApplicationContext接口中处理的事件,如果一个bean实现了ApplicationListener接口,当一个ApplicationEvent 被发布以后,bean会自动被通知。

  1. [java]
  2. public class AllApplicationEventListener implements ApplicationListener < ApplicationEvent >{   
  3.     @Override   
  4.     public void onApplicationEvent(ApplicationEvent applicationEvent)   
  5.     {   
  6.         //process event   
  7.     }   
  8. }   
复制代码

Spring 提供了以下5中标准的事件:

  • 上下文更新事件(ContextRefreshedEvent):该事件会在ApplicationContext被初始化或者更新时发布。也可以在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发。
  • 上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件。
  • 上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件。
  • 上下文关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。
  • 请求处理事件(RequestHandledEvent):在Web应用中,当一个http请求(request)结束触发该事件。

除了上面介绍的事件以外,还可以通过扩展ApplicationEvent 类来开发自定义的事件。

  1. [java]
  2. public class CustomApplicationEvent extends ApplicationEvent{   
  3.     public CustomApplicationEvent ( Object source, final String msg ){   
  4.         super(source);   
  5.         System.out.println("Created a Custom event");   
  6.     }   
  7. }   
复制代码
为了监听这个事件,还需要创建一个**:
  1. [java]
  2. public class CustomEventListener implements ApplicationListener < CustomApplicationEvent >{   
  3.     @Override   
  4.     public void onApplicationEvent(CustomApplicationEvent applicationEvent) {   
  5.         //handle event   
  6.     }   
  7. }   
复制代码
之后通过applicationContext接口的publishEvent()方法来发布自定义事件。
  1. [java]
  2. CustomApplicationEvent customEvent = new CustomApplicationEvent(applicationContext, "Test message");   
  3. applicationContext.publishEvent(customEvent);
复制代码


 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 最佳新人

    注册账号后积极发帖的会员

0关注

2粉丝

139帖子

排行榜
关闭

站长推荐上一条 /1 下一条

官方微信

全国服务热线:

400-0708-360

公司地址:国家西部信息安全产业基地(成都市高新区云华路333号)

邮编:610000    Email:2908503813@qq.com

Copyright   ©2015-2016  EOIT论坛Powered by©Discuz!    ( 蜀ICP备11000634号-7 )