一、Spring Events事件机制
Spring 事件体系是观察者模式的典型应用,观察者模式中有主题(Subject)和观察者(Observer),它定义了对象之间的一对多的依赖关系,当主题状态发生变化时,所有观察者都会收到通知并且自动更新.
特点:
1.可以使业务之间解耦合。
2.默认是同步执行,也可以异步执行如结合 Spring 对异步方法的支持所提供的注解 @Async
和 @EnableAsync
来实现
二、Spring Events 原理
Spring Events 从实现原理上讲即所有观察者继承一个包含触发方法的父类并重写该方法,然后注册到被观察者的一个列表中。当被观察者发生变化时通过调用列表中所有已注册观察者的触发方法,使观察者得到通知,从而作进一步处理。详细的源码解析可以参考Spring的事件与异步事件
注意点
- Spring Events 只能监听同一个 JVM 中的事件
- 异步事件需要关注线程资源,在大并发的情况下需要自定义线程池
- 方法只要注解了
@Async
并且开启异步即可实现异步,异步是多线程中的知识点,而event是一种设计模式(观察者模式或发布订阅模式)
参考资料
1.Spring Events Spring Events 事件机制 · Spring Boot