使用@TransactionalEventListener結合@Async在事務提交之後異步進行Event的處理

        Spring的發佈訂閱模型實際上並不是異步的,而是同步的來將代碼進行解耦。而TransactionEventListener仍是通過這種方式,只不過加入了回調的方式來解決,這樣就能夠在事務進行Commited,Rollback...等的時候纔會去進行Event的處理。

       實際上通過TransactionSynchronizationManager.registerSynchronization是通過手動的來註冊回調也可以實現類似功能。這裏我們重點看第一種。直接上代碼:

1、寫一個監聽事件實體

2、寫一個註解:

3、實現一個切面,並在切入點進行事件發佈

4、監聽處理器

說明:

@TransactionalEventListener註解是需要在事務內發佈的事件纔可以被監聽到,該註解的phase值有四個枚舉,默認就是AFTER_COMMIT,其他三個值BEFORE_COMMIT,AFTER_ROLLBACK,AFTER_COMPLETION。

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