Spring事件通知机制相当于Spring内部提供的一个松耦合的通信框架,可以解耦组件之间的通讯,基于观察者模式实现。
主要组件:
1、 事件:表示一个事件,如果要自定义Spring的事件,只需继承ApplicationEvent抽象类即可
2、 监听器:相当于观察者,是消息流中的下游。可以通过实现ApplicationListener接口来自定义事件监听器。
3、 事件发布器:相当于观察者模式中的发布者。在Spring里,ApplicationContext就是事件发布器,它继承了ApplicationEventPublisher接口。如果某个事件发生了,ApplicationContext会自动将事件发布给对于的Listener。
使用方法及示例:
1、 自定义事件类:直接继承ApplicationEvent,实现事件的构造和处理逻辑
2、 定义事件监听器并注册为Spring的Bean:
3、 利用事件发布器来发布事件:
实现原理:
ApplicationContext内部使用了ApplicationEventMulticaster类,该类负责维护所有的Listener,并通过事件广播其将事件通知到对应的Listener中。