Spring 事務傳播機制是指,包含多個事務的方法在相互調用時,事務是如何在這些方法間傳播的 。
既然是“事務傳播”,所以事務的數量應該在兩個或兩個以上,Spring 事務傳播機制的誕生是為了規定多個事務在傳播過程中的行為的 。比如方法 A 開啟了事務,而在執行過程中又調用了開啟事務的 B 方法,那么 B 方法的事務是應該加入到 A 事務當中呢?還是兩個事務相互執行互不影響,又或者是將 B 事務嵌套到 A 事務中執行呢?所以這個時候就需要一個機制來規定和約束這兩個事務的行為,這就是 Spring 事務傳播機制所解決的問題 。
Spring 事務傳播機制有哪些?Spring 事務傳播機制可使用 @Transactional(propagation=Propagation.REQUIRED) 來定義,Spring 事務傳播機制的級別包含以下 7 種:
- 【面試突擊87:說一下 Spring 事務傳播機制?】Propagation.REQUIRED:默認的事務傳播級別,它表示如果當前存在事務,則加入該事務;如果當前沒有事務,則創建一個新的事務 。
- Propagation.SUPPORTS:如果當前存在事務,則加入該事務;如果當前沒有事務,則以非事務的方式繼續運行 。
- Propagation.MANDATORY:(mandatory:強制性)如果當前存在事務,則加入該事務;如果當前沒有事務,則拋出異常 。
- Propagation.REQUIRES_NEW:表示創建一個新的事務,如果當前存在事務,則把當前事務掛起 。也就是說不管外部方法是否開啟事務,Propagation.REQUIRES_NEW 修飾的內部方法會新開啟自己的事務,且開啟的事務相互獨立,互不干擾 。
- Propagation.NOT_SUPPORTED:以非事務方式運行,如果當前存在事務,則把當前事務掛起 。
- Propagation.NEVER:以非事務方式運行,如果當前存在事務,則拋出異常 。
- Propagation.NESTED:如果當前存在事務,則創建一個事務作為當前事務的嵌套事務來運行;如果當前沒有事務,則該取值等價于 PROPAGATION_REQUIRED 。

文章插圖
看到這里,有人可能會說:說了這么多,我也看不懂啊,即使看懂了,我也記不住啊?這要咋整?
沒關系,接下來我們用一個例子,來說明這 3 類事務傳播機制的區別 。
以情侶之間是否要買房為例,我們將以上 3 類事務傳播機制可以看作是戀愛中的 3 類女生類型:
- 普通型
- 強勢型
- 懂事型
經驗總結擴展閱讀
- 如何評價小說陰陽刺青師
- 關于2021年來了心情說說短語
- 法拉第的名言
- 普通話考試命題說話三分鐘多少字
- 靈尊之子司進小說叫什么
- 十月圍城這小說誰寫的十萬火急
- 心情不好的抖音說說
- 關于樂譜的一個簡單的知識
- 廚房吊頂用什么顏色好
- 晚安唯美正能量句子
