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

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

public class AllApplicationEventListener implements ApplicationListener<ApplicationEvent> {@Overridepublic void onApplicationEvent(ApplicationEvent applicationEvent) {//process event}
}

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

1.上下文更新事件(ContextRefreshedEvent):该事件会在ApplicationContext 被初始化或者更新时发布。也可以在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发。

2.上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext 的Start()方法开始/重新开始容器时触发该事件。

3.上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext 的Stop()方法停止容器时触发该事件。

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

5.请求处理事件(RequestHandledEvent):在Web 应用中,当一个http 请求(request)结束触发该事件。

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

public class CustomApplicationEvent extends ApplicationEvent {public CustomApplicationEvent ( Object source, final String msg ){super(source);System.out.println("Created a Custom event");}
}

为了监听这个事件,还需要创建一个监听器:

public class CustomEventListener implements ApplicationListener < CustomApplicationEvent >{@Overridepublic void onApplicationEvent(CustomApplicationEvent applicationEvent) {}
}

之后通过applicationContext 接口的publishEvent()方法来发布自定义事件。

CustomApplicationEvent customEvent = new CustomApplicationEvent(applicationContext,“Test message”);

applicationContext.publishEvent(customEvent);

Spring 框架中有哪些不同类型的事件?相关推荐

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

    Spring 提供了以下5种标准的事件: (1)上下文更新事件(ContextRefreshedEvent):在调用ConfigurableApplicationContext 接口中的refresh ...

  2. java 事件类型_Spring框架中有哪些不同类型的事件?

    Spring内置事件 内置事件中由系统内部进行发布,只需注入监听器 自定义事件 事件类需要继承ApplicationEvent,代码如下: public class BigEvent extends ...

  3. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式-在AOP和remoting中被用的比较 ...

  4. 25道Spring框架面试题

    25个经典的Spring面试问答 By - Last updated: 星期二, 五月 5, 2015 本人收集了一些在大家在面试时被经常问及的关于Spring的主要问题,这些问题有可能在你下次面试时 ...

  5. Spring框架面试精华知识

    咳咳,这里整理一些关于WEB框架的一些知识点,来帮助更多的人进行面试,主要的还是讲解一些关于目前企业用得比较流行的框架,还有就是一些比较前沿的框架,比如阿里开源的Dubbo框架及其开源框架Zookee ...

  6. spring框架之面试

    spring框架之面试 Spring的主要问题,这些问题有可能在你下次面试时就会被问到.对于本文中未提及的Spring其他模块,我会单独分享面试的问题和答案. 欢迎大家向我推荐你在面试过程中遇到关于S ...

  7. Spring 框架分析

    1 .Spring 框架是一个什么框架? Spring 是一个资源整合框架,其核心是资源整合,然后以一种更加科学的方式对外提供服 务,例如提高对象的应用效率,降低系统开销,提高代码的可维护性等等.其官 ...

  8. 浅谈Spring框架应用的设计模式(一)——工厂模式

    文章目录 前言 一.工厂模式介绍 1.简单工厂模式 (1)静态工厂模式 (2)利用反射机制实现的简单工厂 2.工厂方法模式 3.抽象工厂模式 二.Spring框架中工厂模式的重要应用 1.BeanFa ...

  9. Spring框架中提取list集合类型属性注入

    提取list集合类型属性注入 前言 引入名称空间 编写`xml`配置文件 运行结果 前言 对于某一个类型属性通用性较高的情况下,可以单独的提取出来,给需要的bean进行引用. 有关类的创建见<S ...

最新文章

  1. ES6中的rest参数
  2. mysql InnoDB 聚集索引,二级索引
  3. SAP WebIDE 是如何加载SAP UI5里自定义的XML view的 - JerryMaster.view.xml
  4. PHP检测远端文件是否存在
  5. java referencemap_Java中TypeReference用法说明
  6. linux搭建spark集群,详解Spark+Zookeeper搭建高可用Spark集群
  7. USB应用开发笔记之一:STM32上实现USB主机读写U盘
  8. python 实现大文件md5值计算
  9. 红旗linux怎么更新,红旗linux7.0下自动更新firefox
  10. 一个水杯居然能引出这么多测试点
  11. 如何判断对方列表里是不是好友_微信如何快速查看是否为好友关系
  12. 在网页浏览器中原生显示PDF文件
  13. ADS仿真4_滤波器设计
  14. Linux基础之计算机网络
  15. 读《天才在左,疯子在右》03--灵魂深处
  16. quartz表删除顺序
  17. usb gadget 端点halt的产生
  18. 【实践】基于CentOS7部署Ceph集群(版本10.2.2)
  19. linux下使用tc做流量限速
  20. unix编程书籍推荐

热门文章

  1. [原创]IrrLicht的GUI使用
  2. Eclipse热部署插件(Jrebel) 下载安装教程
  3. PHP中抽象类与接口的应用场景
  4. phpstrom 代码格式
  5. .cpp 编译成.a或是 .so
  6. robot wireless communication
  7. 帮盖尔优化SQL-----子查询优化的经典案例
  8. c#转换成vbnet 工具 (源代码)
  9. 谈Elasticsearch下分布式存储的数据分布
  10. 模板代码复用的三种方式: 宏, 继承, 包含