1.@transactional加在非public方法上,這個其實idea就能規避了,有語法檢查;
2.非@transactional註解方法呼叫同類中使用@transactional註解的方法,不生效,原因是事務管理用到了動態**,原理自己去查;
偽**:
public void test()
@transactional
public void tt()});
int i = 1 / 0;
}
此時外部呼叫test()方法,發生異常但資料仍然提交成功;
3.呼叫方將異常捕獲,事務不回滾;
public void tt()});
int i = 1 / 0;
}
@transactional
public void t() catch (exception e)
}
解決方法就是:
1)不捕獲異常,通過全域性捕獲等方式
2)捕獲後再次丟擲異常
3)設定當前事務回滾transactionaspectsupport.currenttransactionstatus().setrollbackonly();
4)業務層也加@transactional註解,這時會發生異常(transaction rolled back because it has been marked as rollback-only),這裡涉及到事務傳播了,不具體說
spring事務控制不起作用(MYSQL)
color red blog遷移至 color url size medium 專案框架就是標準的ssh,測試發現不能實現資料回滾,花了大半天的時間去檢查配置和程式均沒有問題,主要是從以下幾方面去查詢問題 spring 事務配置 巢狀事務 異常是否已經 獲 dao是否強制commit。實在找不到原因...
Spring AOP不起作用原因
一 直接在切面類定義切點 aop切面類裡面的方法全部不支援觸發切面,否則乙個切面函式把自己當做切點就會導致遞迴層層呼叫。aop切面類發出函式呼叫一律不觸發切面,避免兩個切面類相互呼叫迭代請求的情況。二 被 物件兩個切點方法內部呼叫 被spring的aop增強的類,在同乙個類的內部方法呼叫時,其被呼叫...
Lombok不起作用原因
idea搜尋plugins安裝外掛程式lombok。才能實現自動生成 get set 不然一片紅 引入jar包 org.projectlombokgroupid lombokartifactid 1.16.20version providedscope dependency lombok外掛程式是可...