Spring(十四)--Spring事件

Posted jazon@

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring(十四)--Spring事件相关的知识,希望对你有一定的参考价值。

Java事件/监听器编程模型

  • 设计模式–观察者模式扩展

1.可观察对象–java.util.Observable
2.观察者–java.util.Observer

  • 标准化接口

1.事件对象–java.util.EventObject
2.事件监听器–java.util.EventListener

Spring标准事件–ApplicationEvent

  • java标准事件 java.util.EventObject扩展,扩展特性:事件发生时间戳
  • Spring应用上下文ApplicationEvent扩展-ApplicationContextEvent

基于接口的Spring事件监听器

  • 扩展接口-org.springframeworkcontext.ApplicationListener
  • 设计特定: 单一类型事件处理

基于注解的Spring事件监听器

注册SpringApplicationListener

方法一: ApplicationListener作为SpringBean注册
方法二:通过ConfigurableApplicationContext API注册

Spring事件发布器

方法一:通过ApplicationEventPublisher发布Spring事件,依赖注入获取ApplicationEventPublisher
方法二:通过ApplicationEventMulticaster发布Spring事件,依赖注入或以来查找获取ApplicationEventMulticaster

Spring层次性上下文事件传播

  • 发生说明: 当Spring应用出现多层次Spring应用上下文时,如SpringCloud下,由子ApplicationContext发起的Spring事件会传递到ParentApplicationContext的过程
  • 如何避免:定位Spring事件源(ApplicationContext)进行过滤处理

ApplicationEventPublisher的底层实现

ApplicationContext接口继承了ApplicationEventPublisher,所以ApplicationContext本身就是一个事件发布器,它的底层实现依赖于ApplicationEventMulticaster

  • 可以往SimpleApplicationEventMulticaster注册ErrorHandler

ErrorHandler可以处理在发布事件,执行事件发生的Throwable异常

  • SimpleApplicationEventMulticaster关于泛型处理

利用ResolvableType这个泛型类,解决发布指定类型事件,能调用指定类型的事件监听器

以上是关于Spring(十四)--Spring事件的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot入门二十四,Application事件监听

spring 发生事件后如何使用自定义参数启动@Bean 进行测试?

spring#事件发布订阅

Spring基础(十四):Spring的事务回顾

在多层spring项目中抛出自定义异常

(二十四)Struts2 Spring集成