下面這種情況,使用了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方法,發現可以正常回滾,然後對比 請教後發現了問題,原來是沒有回滾的那...