捕獲異常丟擲事務不回滾

2022-01-29 07:25:17 字數 491 閱讀 1712

方法名上加註解事務 @transactional 使用註解的簡單模式,報錯會回滾,但是如果方法中捕獲異常後手動丟擲異常,事務並沒有回滾。

預設spring事務只在發生未**獲的 runtimeexception 時才回滾。  

spring aop  異常捕獲原理:被攔截的方法需顯式丟擲異常,並不能經任何處理,這樣aop**才能捕獲到方法的異常,才能進行回滾,預設情況下aop只捕獲

runtimeexception 的異常,但可以通過配置來捕獲特定的異常並回滾。

解決方法:

1.在catch中丟擲異常時丟擲異常型別為 runtimeexception  ,經測試 exception 確實不可以回滾。

2.如果catch中有其他需要不可以丟擲 runtimeexception  ,可以手動回滾事務:

transactionaspectsupport.currenttransactionstatus().setrollbackonly();

Spring事務異常回滾,捕獲異常不丟擲就不會回滾

預設spring事務只在發生未 獲的 runtimeexcetpion時才回滾。spring aop 異常捕獲原理 被攔截的方法需顯式丟擲異常,並不能經任何處理,這樣aop 才能捕獲到方法的異常,才能進行回滾,預設情況下aop只捕獲runtimeexception的異常,但可以通過 配置來捕獲特定的...

Spring事務異常回滾,捕獲異常不丟擲就不會回滾

下面這種情況,使用了catch捕獲了異常,spring事務 不會發生回滾 try catch exception e 預設spring事務只在發生未 獲的 runtimeexception 時才回滾。springaop 異常捕獲原理 被攔截的方法需顯式丟擲異常,並不能經任何處理,這樣aop 才能捕獲...

Spring事務異常回滾,捕獲異常不丟擲就不會回滾

預設spring事務只在發生未 獲的 runtimeexcetpion時才回滾。spring aop 異常捕獲原理 被攔截的方法需顯式丟擲異常,並不能經任何處理,這樣aop 才能捕獲到方法的異常,才能進行回滾,預設情況下aop只捕獲runtimeexception的異常,但可以通過 配置來捕獲特定的...