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事件监听