spring事務 異常不會回滾

問題描述 :spring

在service作業務處理操做2個數據庫表發生異常事務沒有回滾 數據庫

默認spring事務只在發生未被捕獲的 runtimeexcetpion時纔回滾。  
   spring aop  異常捕獲原理:被攔截的方法需顯式拋出異常,並不能經任何處理,這樣aop代理才能捕獲到方法的異常,才能進行回滾,默認狀況下aop只捕獲runtimeexception的異常,但能夠經過  代理

在service不能夠捕獲異常 必須讓spring aop 捕獲 才能進行回滾事務

解決方法io

1: 去掉service的 try catch 原理

2:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();語句,手動回滾,aop

相關文章
相關標籤/搜索