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