Spring事件驱动
spring事件驱动由3个部分组成
-
ApplicationEvent:表示事件本身,自定义事件需要继承该类,用来定义事件
-
ApplicationEventPublisher:事件发送器,主要用来发布事件
-
ApplicationListener:事件监听器接口,监听类实现ApplicationListener 里onApplicationEvent方法即可,也可以在方法上增加@EventListener以实现事件监听。
实现Spring事件驱动一般只需要三步:
-
自定义需要发布的事件类,需要继承ApplicationEvent类
-
使用ApplicationEventPublisher来发布自定义事件
-
使用@EventListener来监听事件
这里需要特别注意一点,默认情况下事件是同步的。即事件被publish后会等待Listener的处理。如果发布事件处的业务存在事务,监听器处理也会在相同的事务中。如果需要异步处理事件,可以onApplicationEvent方法上加@Aync支持异步或在有@EventListener的注解方法上加上@Aync。