`

spring发布和接收定制的事件(spring事件传播)

 
阅读更多
事件传播
ApplicationContext基于Observer模式(java.util包中有对应实现),提供了针对Bean的事件传
播功能。通过Application. publishEvent方法,我们可以将事件通知系统内所有的ApplicationListener
事件传播的一个典型应用是,当Bean中的操作发生异常(如数据库连接失败),则通过事件传播
机制通知异常监听器进行处理。在笔者的一个项目中,就曾经借助事件机制,较好的实现了当系统异常时在监视终端上报警,同时发送报警SMS至管理员手机的功能。
事件监听者在 事件中心注册,事件中心发布事件, 事件发生

ApplicationContext容器提供了容器内部事件发布功能,Spring中提供了该接口的子类ApplicationListener接口。
EventObject,为JavaSE提供的事件类型基类,Spring中提供了该接口的子类ApplicationEvent。
JavaSE中未提供事件发布者这一角色类,由各个应用程序自行实现事件发布者这一角色。Spring中提供了ApplicationEventPublisher接口作为事件发布者,并且ApplicationContext实现了这个接口,担当起了事件发布者这一角色。但ApplicationContext在具体实现上有所差异,Spring提供了ApplicationEventMulticaster接口,负责管理ApplicationListener和发布ApplicationEvent。ApplicationContext会把相应的事件相关工作委派给ApplicationEventMulticaster接口实现类来做。类图如下所示

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

Spring事件处理一般过程:

◆定义Event类,继承org.springframework.context.ApplicationEvent。
◆编写发布事件类Publisher,实现org.springframework.context.ApplicationContextAware接口。
◆覆盖方法setApplicationContext(ApplicationContext applicationContext)和发布方法publish(Object obj)。
◆定义时间监听类EventListener,实现ApplicationListener接口,实现方法onApplicationEvent(ApplicationEvent event)。
分享到:
评论

相关推荐

    spring事件传播

    spring发布和接收定制事件(这个上传必须要填资源分啦),ApplicationContext基于Observer模式(java.util包中有对应实现),提供了针对Bean的事件传 播功能。通过Application. publishEvent方法,我们可以将事件...

    Spring攻略(第二版 中文高清版).part1

    10.6 使用BlazeDS和Spring消费面向消息的服务 421 10.6.1 问题 421 10.6.2 解决方案 422 10.6.3 工作原理 422 10.7 将依赖注入带给你的ActionScript客户 434 10.7.1 问题 434 10.7.2 解决方案 434 ...

    Spring中文帮助文档

    6.1.2. Spring AOP的功能和目标 6.1.3. AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明一个切面 6.2.3. 声明一个切入点(pointcut) 6.2.4. 声明通知 6.2.5. 引入(Introduction) 6.2.6. ...

    Spring API

    2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件...

    springCloud

    用于在集群中传播状态更改(例如配置更改事件)或其他管理指令。Spring Cloud Bus 的一个核心思想是通过分布式的启动器对 Spring Boot 应用进行扩展,也可以用来建立一个或多个应用之间的通信频道。目前唯一实现的...

    SpringBoot事件发布及订阅详解含代码示例(值得珍藏)

    当事件被发布时,所有注册的监听器将会接收到一个 ApplicationEvent 对象,通过该对象的 getSource() 方法可以获取到事件源,即触发事件的组件。同时,通过 getTimestamp() 方法可以获取到事件发生的时间戳。 ...

    Spring攻略(第二版 中文高清版).part2

    10.6 使用BlazeDS和Spring消费面向消息的服务 421 10.6.1 问题 421 10.6.2 解决方案 422 10.6.3 工作原理 422 10.7 将依赖注入带给你的ActionScript客户 434 10.7.1 问题 434 10.7.2 解决方案 434 ...

    积分管理系统java源码-SpringCloud-Learning:SpringCloud-Learning

    Bus:事件、消息总线,用于传播集群中的状态变化或事件 Spring Cloud Consul:服务发现与配置管理工具 Spring Cloud Stream:通过简单的声明式模型来发送和接收消息,整合了Rabbit和Kafka Spring Cloud Security:...

    最新小程序文章管理系统+ssm.zip

    该项目利用微信平台的便捷性与广泛覆盖优势,结合SSM框架的高效数据处理能力,为用户提供了一个简便、高效的文章发布和管理平台。 以下是该微信小程序文章管理系统的核心功能和特点: 1. **文章发布**:用户可以...

    ssm项目校园疫情防控管理平台小程序pf.zip

    该项目利用MySQL作为后端数据库,旨在为高校和其他教育机构提供一个便捷的校园疫情防控管理解决方案,使得用户能够在微信环境中轻松地报告健康状态、记录行程信息以及接收防疫通知。 项目的主要功能可能包括: 1. ...

    数据管理平台 Apache Geode.zip

    集成 Spring 框架来加速和简化高可扩展、高并发和事务型企业级应用的开发复杂度.JTA 兼容的事务支持.集群的配置可以写到文件中和导出到其他集群中.通过HTTP做 远程集群管理.基于REST应用开发的REST APIs.滚动升级是...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    8.6.3 定制Session Bean的生命 周期行为 323 8.7 在Session Bean中使用事务 327 8.7.1 容器管理事务 327 8.7.2 Bean管理事务 330 8.8 拦截器 332 8.9 依赖注入 335 8.9.1 EJB注入 336 8.9.2 资源注入 339 8.10 配置...

    你的接口,真的能承受高并发吗?

    本文转自公众号【肥朝】 前言 本篇主要讲解的是前阵子的一个...我们先不纠结为什么使用第三种,后面在讲事务传播机制的时候我会专门介绍,我们聚焦一下主题,你现在只要知道,那个是开启事务的意思就行了.我特意用红色和

Global site tag (gtag.js) - Google Analytics