spring 的事務傳播性,多操作,多嘗試

2021-10-25 06:43:23 字數 1107 閱讀 1655

只要和資料庫互動,一定會使用到事務,那麼事務的傳播性有哪幾類。

事務種類(原始碼)

public enum propagation 

public int value()

}

1、required 預設事務

直接使用註解@transactional,預設的就是required,也可以不宣告,可以使用在增刪改。

如果在乙個方法a中呼叫了兩個方法,如果使用required,就意味著整體建立了乙個事務。如果子方法開啟了乙個事務,缺省會加入到a的事務中形成乙個事務整體

2、supports

如果當前有事務,則使用事務,如果沒有事務則不啟用事務。 如a掉用bc兩個方法,a上面沒有事務,則bc上增加supports ,則資料不會回滾。如果a上有事務,

則bc事務生效,如果出現異常,資料會回滾。

3、mandatory

mandatory強制性的,如果a呼叫bc,bc使用了mandatory,然後a上面沒有配置事務,則執行則會丟擲異常。如果a使用了事務,呼叫bc,則正常使用。

4、requires_new

建立乙個新事務,並掛起當前事務,出現兩個事務。 例如 a方法呼叫bc方法,b上面有requires_new事務標識,c沒有。執行後,b中如果有異常,b中的資料會回滾,c正常執行完成。

如果a使用required事務,如果bc有requires_new則新開啟乙個事務,如果沒有就required

5、not_supported

不使用事務。例如a方法呼叫bc方法。 如果a方法有事務required,b方法有事務not_supported,如果出現異常c方法資料會回滾,b方法則不會回滾。

6、never

不允許有事務,例如a呼叫bc,a使用了事務,bc使用了never,則會丟擲非法事務的異常。

7、nested

巢狀事務,如果當前有事務,就建立子事務。例如a方法呼叫bc方法,如果a使用required,bc中使用nested事務,a中發生異常時,事務會被回滾。如果a沒有事務,a發生異常時,事務不會回滾。

如果時b發生異常時,如果不捕獲,主事務也會回滾。如果主事務提交,子事務會一併提交。

以上內容如果有不完整的,大神們勿噴,請指教。

spring 事務傳播性

大白話講就是,方法之間互相呼叫的時候,事務如何傳播,比如a 呼叫b b 的事務是和a 共用乙個事務 失敗一起提交 還是新事務 兩者事務互不影響 還是說b 不需要事務?這就是事務傳播性的意思。transactional public void methoda transactional public ...

spring事務的傳播性

spring事務的傳播行為 1.propagation manatory 強制使用當前事務,如果當前沒有事務,就會丟擲乙個異常 2.propagation nested 如果當前存在事務,則在該事務內巢狀執行 巢狀執行時屬於該事務的子事務,當外層事務提交時,子事務跟著提交 子事務提交或回滾不會影響外...

Spring 宣告式事務的傳播性

spring中設定事務的傳播屬性有如下7種 required 業務方法需要在乙個事務中執行,如果方法執行時,已處在乙個事務中,那麼就加入該事務,否則自己建立乙個新的事務.這是spring預設的傳播行為.supports 如果業務方法在某個事務範圍內被呼叫,則方法成為該事務的一部分,如果業務方法在事務...