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

2021-08-14 14:14:09 字數 837 閱讀 4976

下面這種情況,使用了catch捕獲了異常,

spring事務

不會發生回滾

try catch (exception e)

預設spring事務只在發生未**獲的

runtimeexception

時才回滾。  

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

runtimeexception

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

解決方式

1:通過throw new runtimeexception();

丟擲執行時異常

try catch (exception e)

2: transactionaspectsupport.currenttransactionstatus().setrollbackonly();,手動回滾

try catch (exception e)

3: 還有一種方法,而且是推薦方法:在這個**所在的方法上加上rollbackfor ,形如:@transactional(readonly = true, rollbackfor = exception.class)。這樣也可以回滾。

eg:@transactional(readonly = true, rollbackfor = exception.class)

public void getpermissionsbyroleid(long roleid) catch (exception e)

}

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

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

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

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

spring事務遇到異常回滾問題

之前寫 時一直在service層處理異常 或者壓根不管異常 直到前一段時間發現一段需要往資料庫插入資料的service層 在遇到異常時,資料庫的資料竟然沒有被回滾掉,然後看spring的事務配置的也沒有問題,測試別的service方法,發現可以正常回滾,然後對比 請教後發現了問題,原來是沒有回滾的那...