springboot 事務不起作用

當@Transactional不起作用如何排查問題。

可以按照以下幾個步驟逐一確認:

1、首先要看數據庫本身對應的庫、表所設置的引擎是什麼。MyIsam不支持事務,如果需要,則必須改爲InnnoDB。

2、@Transactional所註解的方法是否爲public

3、@Transactional所註解的方法所在的類,是否已經被註解@Service或@Component等。

4、需要調用該方法,且需要支持事務特性的調用方是在在 @Transactional所在的類的外面。注意:類內部的其他方法調用這個註解了@Transactional的方法,事務是不會起作用的。

5、註解爲事務範圍的方法中,事務的回滾僅僅對於unchecked的異常有效。對於checked異常無效。也就是說事務回滾僅僅發生在出現RuntimeException或Error的時候。

如果希望一般的異常也能觸發事務回滾,需要在註解了@Transactional的方法上,將@Transactional回滾參數設爲:

@Transactional(rollbackFor=Exception.class)

 文章參考:https://blog.csdn.net/Z__Sheng/article/details/89489053

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章