方法名上加註解事務 @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的異常,但可以通過 配置來捕獲特定的...