1.Spring boot是默認啟動事務的,只需要在(service層中添加)類或者方法上添加@Transactional注解即可(很簡單呢!)
a.類上面
b.方法上
如果事務不生效 可能有以下原因
1、首先要看數據庫引擎是否支持注解,mysql默認引擎INNODB是支持的,但MYISAM是不支持的;
2、注解只能被應用到public方法上, 其它方法上不會報錯,但不生效;
3、默認情況下只會對運行期異常(java.lang.RuntimeException及其子類)和 Error 進行回滾;
4、如果是其它異常,可以顯形標記在參數里,下圖標紅的就是先進行查看用戶有指定的異常,如果沒有,就默認上一條的異常,參數格式:@Transactional(rollbackFor={Exception.class})
5、是否進行了異常捕獲,如果使用了try--catch,事務是肯定不生效,也就是系統沒有接收到異常場景;
關於使用異常捕獲,還想事務生效,可以有幾種策略解決相關難題:
1)手動回滾,推薦方式
2)在catch里拋出一個runntimeException
3) 將異常寫入注解參數里面,也需要拋出來,原理跟方法2一樣的,只是重新指定了事務回滾的異常類型
————————————————
版權聲明:本文為CSDN博主「sailor125」的原創文章,遵循CC 4.0 BY-SA版權協議
原文鏈接:https://blog.csdn.net/sailor125/java/article/details/90610927