springboot中事務(wù)管理@Transactional的注意事項(xiàng)與使用場(chǎng)景
前言:在service層的方法上使用@Transactional 即可實(shí)現(xiàn)處理數(shù)據(jù)庫(kù)發(fā)生錯(cuò)誤時(shí)觸發(fā)事務(wù)回滾機(jī)制。
注意:
- Spring 基于注解的聲明式事物 @Transactional 默認(rèn)情況下只會(huì)對(duì)運(yùn)行期異常(java.lang.RuntimeException及其子類)和 Error 進(jìn)行回滾。
- 數(shù)據(jù)庫(kù)引擎要支持事物,使用InnoDB。
- @Transactional 只能被應(yīng)用到public方法上, 對(duì)于其它非public的方法,如果標(biāo)記了@Transactional也不會(huì)報(bào)錯(cuò),但方法沒有事務(wù)功能.
具體使用場(chǎng)景:
- 在service方法中不使用try-catch顯示處理異常,直接
throw new runtimeexcetpion()
可實(shí)現(xiàn)事務(wù)回滾 - 在service方法中使用try-catch,但是需要在catch中加上
throw new runtimeexcetpion()
可實(shí)現(xiàn)事務(wù)回滾 - 注意當(dāng)方法加上synchronized時(shí),由于鎖的作用范圍比事務(wù)的作用范圍小,因此應(yīng)該修改鎖的作用范圍,保證鎖的范圍比事務(wù)的范圍大即可。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
IntelliJ IDEA 創(chuàng)建 Java 項(xiàng)目及創(chuàng)建 Java 文件并運(yùn)行的詳細(xì)步驟
這篇文章主要介紹了IntelliJ IDEA 創(chuàng)建 Java 項(xiàng)目及創(chuàng)建 Java 文件并運(yùn)行的詳細(xì)步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11SpringBoot 實(shí)現(xiàn)定時(shí)任務(wù)的方法詳解
這篇文章主要介紹了SpringBoot 實(shí)現(xiàn)定時(shí)任務(wù)的方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08spring boot 打包jar jar沒有主目錄清單問(wèn)題的完美解決方法
這篇文章主要介紹了spring boot 打包jar jar沒有主目錄清單問(wèn)題的解決方法,本文是小編第一次寫,希望對(duì)大家有所幫助2018-07-07SpringCloud可視化鏈路追蹤系統(tǒng)Zipkin部署過(guò)程
這篇文章主要介紹了SpringCloud可視化鏈路追蹤系統(tǒng)Zipkin部署過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Java設(shè)計(jì)模式之代理模式與@Async異步注解失效的解決
代理模式是Java常見的設(shè)計(jì)模式之一。所謂代理模式是指客戶端并不直接調(diào)用實(shí)際的對(duì)象,而是通過(guò)調(diào)用代理,來(lái)間接的調(diào)用實(shí)際的對(duì)象2022-07-07