前言:在service層的方法上使用@transactional 即可實現處理數據庫發生錯誤時觸發事務回滾機制。
注意:
- spring 基于注解的聲明式事物 @transactional 默認情況下只會對運行期異常(java.lang.runtimeexception及其子類)和 error 進行回滾。
- 數據庫引擎要支持事物,使用innodb。
- @transactional 只能被應用到public方法上, 對于其它非public的方法,如果標記了@transactional也不會報錯,但方法沒有事務功能.
具體使用場景:
-
在service方法中不使用try-catch顯示處理異常,直接
throw new runtimeexcetpion()
可實現事務回滾 -
在service方法中使用try-catch,但是需要在catch中加上
throw new runtimeexcetpion()
可實現事務回滾 - 注意當方法加上synchronized時,由于鎖的作用范圍比事務的作用范圍小,因此應該修改鎖的作用范圍,保證鎖的范圍比事務的范圍大即可。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
原文鏈接:https://blog.csdn.net/weixin_40581455/article/details/84561048