前言
在使用事務的時候,偶爾會出現失效的情況,往往會讓人摸不着頭腦,明明已經加了@Transactional了啊,以下整理了幾種可能導致事務失效的場景。
1、同一個類裏的方法調用
加事務的方法不會被spring aop所代理的對象管理,所以無效。
2、方法不是public修飾
computeTransactionAttribute方法在獲取Transactional註解信息時, 會檢查目標方法的修飾符是否爲 public,不是 public則不會獲取@Transactional 的屬性配置信息
3、方法中使用try catch
如果catch了異常 處理完沒有拋出 那麼也會導致事務失效
4、rollbackFor設置原因
rollbackFor設置了之後,事務只會在指定的設置下生效
5、數據庫引擎不支持事務
比如 mysql的 innodb支持 但是myisam不支持