java基于事件驱动之spring事件驱动

来源:互联网 发布:us域名网站打不开 编辑:程序博客网 时间:2024/06/01 18:00

事件驱动4个要素:

事件、事件源、注册中心(事件通道)、侦听器。

事件驱动和观察者模式本质一样,事件驱动是观察者模式的经典实现。

事件驱动的好处:

1、 无耦合的关联,事件发布者和订阅者不需要预先知道彼此的存在。

2、 异步消息传递,业务逻辑和事件可以同步发生。

3、 多对多的交互,发布订阅模型。




定义事件类:这个类需要继承ApplicationEvent类。

注册事件的监听器:监听类需要实现ApplicationListener接口,并将泛型设置为具体的事件类。

事件生产者:需要实现ApplicationContextAware接口,通过applicationContext.publishEvent()发布事件。

注册中心:spring初始化的时候将所有的监听器放入集合中,当发布事件后spring会遍历集合将监听这个事件的所有监听器取出来依次执行监听代码。


具体业务

传统的业务流程,飞机票预定和发送短信、发送邮件耦合在一起,在同一个线程中,会出现如果短信或者邮件服务异常会引起主业务异常。所以需要通过事件驱动方式解耦。



基于spring的事件驱动不止在代码级别解耦,一定要在线程级别解耦。配置事件异步支持(多线程方式),并通过线程池来实现不同的监听器用不同的线程。