Spring事務(wù)的七種傳播行為
一、什么是事務(wù)傳播行為
什么叫事務(wù)傳播行為?聽起來挺高端的,其實很簡單。
即然是傳播,那么至少有兩個東西,才可以發(fā)生傳播。單體不存在傳播這個行為。
所為的事務(wù)傳播行為就是多個聲明的事務(wù)的方法 相互調(diào)用的時候,這個事務(wù)該如何傳遞
如上圖:methodA()
調(diào)用methodB()
那么這兩個方法都顯示了開啟事務(wù),那么methodB()
開啟一個新的事務(wù),還是繼續(xù)在methodA()
這個事務(wù)里面去執(zhí)行,就去決所謂的事務(wù)傳播的一個行為
二、事務(wù)的傳播行為有哪些?
Spring中定義了七種事務(wù)的傳播行為,完整版的傳播行為如下:
REQUIRED(默認(rèn))
:它是Spring里面默認(rèn)的事務(wù)傳播行為,也就新當(dāng)前存在事務(wù)就加入到當(dāng)前事務(wù)去執(zhí)行,如果不存在事務(wù)就創(chuàng)建一個事務(wù)REQUIRE_NEW
:它不管是否存在事務(wù),它都會新開啟一個事務(wù)來執(zhí)行,新老事務(wù)相互獨立的,外部事務(wù)拋出異常,并不會影響內(nèi)部事務(wù)的一個正常提交NESTED
:如果當(dāng)前存在事務(wù),就嵌套當(dāng)前事務(wù)中去執(zhí)行,如果當(dāng)前沒有事務(wù),那么就新建一個事務(wù),類似REQUIRE_NEW
這個樣一個傳播行為SUPPORTS
:表示支持當(dāng)前當(dāng)前的事務(wù),如果當(dāng)前不存在事務(wù),就以非事務(wù)的方式去執(zhí)行NOT_SUPPORT
:表示以非事務(wù)的方式來運行,如果當(dāng)前存在事務(wù),就需要把當(dāng)前的事務(wù)掛起來。MANDATORY
:它是一個強制的事務(wù)執(zhí)行,如果當(dāng)前不存在事務(wù)就拋出一個異常NEVER
:就是以非事務(wù)的方式來執(zhí)行,如果當(dāng)前存在事務(wù)則拋出一個異常
Spring的事務(wù)傳播級別一般是不需要去定義的,默認(rèn)就是 REQUIRED
,除非在嵌套的事務(wù)情況下,需要去重點了解
到此這篇關(guān)于Spring事務(wù)的七種傳播行為的文章就介紹到這了,更多相關(guān)Spring事務(wù)傳播行為內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mapstruct?@Mapper?@Mapping?使用小結(jié)
這篇文章主要介紹了Mapstruct?@Mapper?@Mapping使用小結(jié),他們用于各個對象實體間的相互轉(zhuǎn)換,例如數(shù)據(jù)庫底層實體轉(zhuǎn)為頁面對象,Model?轉(zhuǎn)為?DTO,?DTO?轉(zhuǎn)為其他中間對象,?VO?等等,相關(guān)轉(zhuǎn)換代碼為編譯時自動產(chǎn)生的新文件和代碼,需要的朋友可以參考下2023-09-09Mybatis執(zhí)行SQL時多了一個limit的問題及解決方法
這篇文章主要介紹了Mybatis執(zhí)行SQL時多了一個limit的問題及解決方法,Mybatis攔截器方法識別到配置中參數(shù)supportMethodsArguments 為ture時會分頁處理,本文結(jié)合示例代碼給大家講解的非常詳細,需要的朋友可以參考下2022-10-10java編程中字節(jié)流轉(zhuǎn)換成字符流的實現(xiàn)方法
下面小編就為大家?guī)硪黄猨ava編程中字節(jié)流轉(zhuǎn)換成字符流的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01