使用@TransactionalEventListener结合@Async在事务提交之后异步进行Event的处理

        Spring的发布订阅模型实际上并不是异步的,而是同步的来将代码进行解耦。而TransactionEventListener仍是通过这种方式,只不过加入了回调的方式来解决,这样就能够在事务进行Commited,Rollback...等的时候才会去进行Event的处理。

       实际上通过TransactionSynchronizationManager.registerSynchronization是通过手动的来注册回调也可以实现类似功能。这里我们重点看第一种。直接上代码:

1、写一个监听事件实体

2、写一个注解:

3、实现一个切面,并在切入点进行事件发布

4、监听处理器

说明:

@TransactionalEventListener注解是需要在事务内发布的事件才可以被监听到,该注解的phase值有四个枚举,默认就是AFTER_COMMIT,其他三个值BEFORE_COMMIT,AFTER_ROLLBACK,AFTER_COMPLETION。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章