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