問題描述 :spring
在service作業務處理操做2個數據庫表發生異常事務沒有回滾 數據庫
默認spring事務只在發生未被捕獲的 runtimeexcetpion時纔回滾。
spring aop 異常捕獲原理:被攔截的方法需顯式拋出異常,並不能經任何處理,這樣aop代理才能捕獲到方法的異常,才能進行回滾,默認狀況下aop只捕獲runtimeexception的異常,但能夠經過 代理在service不能夠捕獲異常 必須讓spring aop 捕獲 才能進行回滾事務
解決方法io
1: 去掉service的 try catch 原理
2:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();語句,手動回滾,aop