spring的事務傳播級別及場景



PROPAGATION_REQUIRED :默認事務類型,如果沒有,就新建一個事務;如果有,就加入當前事務。適合絕大多數情況。[關鍵點:是同一個事務]

   場景:  

不同的類,class1,class2

class1.fun1--->class2.fun2: fun1調用fun2 ,無論在fun1還是fun2里發生unchecked異常[不論是否catch處理異常],都會觸發整個方法的回滾.

 

PROPAGATION_REQUIRES_NEW:如果沒有,就新建一個事務;如果有,就將當前事務掛起.[關鍵點:2個事務是單獨的,沒有依賴關系]

  場景:

 class1.fun1--->class2.fun2: fun1調用fun2 ,

如果fun2拋出異常且被catch處理,則fun2回滾,fun1不回滾.

如果fun2拋出異常且沒被catch處理,則fun2,fun1都回滾.

如果fun1拋出異常,則fun1回滾,fun2不回滾. 

 

PROPAGATION_NESTED:如果沒有,就新建一個事務;如果有,就在當前事務中嵌套其他事務。[關鍵點:2個事務是依賴關系,fun2依賴fun1]

  場景:

 class1.fun1--->class2.fun2: fun1調用fun2,

如果fun2拋出異常且在fun1里catch處理了,則fun2回滾,fun1不回滾, 如果沒有catch,則fun1也回滾.

如果fun1拋出異常,則fun1和fun2都回滾.

 

 特別注意: 當Spring的事務在同一個類時,它的自我調用時事務將失效.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM