spring事務的傳播特性

2021-07-24 08:04:04 字數 630 閱讀 7877

spring 事務乙個被訛傳很廣說法是:乙個事務方法不應該呼叫另乙個事務方法,否則將產生兩個事務。結果造成開發人員在設計事務方法時束手束腳,生怕一不小心就踩到地雷。

其實這種是不認識 spring 事務傳播機制而造成的誤解,spring 對事務控制的支援統一在 transactiondefinition 類中描述,該類有以下幾個重要的介面方法:

很明顯,除了事務的傳播行為外,事務的其它特性 spring 是借助底層資源的功能來完成的,spring 無非只充當個**的角色。但是事務的傳播行為卻是 spring 憑藉自身的框架提供的功能,是 spring 提供給開發者最珍貴的禮物,訛傳的說法玷汙了 spring 事務框架最美麗的光環。

所謂事務傳播行為就是多個事務方法相互呼叫時,事務如何在這些方法間傳播。spring 支援 7 種事務傳播行為:

spring 預設的事務傳播行為是 propagation_required,它適合於絕大多數的情況。假設 servivex#methodx() 都工作在事務環境下(即都被 spring 事務增強了),假設程式中存在如下的呼叫鏈:service1#method1()->service2#method2()->service3#method3(),那麼這 3 個服務類的 3 個方法通過 spring 的事務傳播機制都工作在同乙個事務中。

spring事務傳播特性

1.propagation required 如果存在乙個事務 則支援當前事務。如果沒有事務則開啟。2.propagation supports 如果存在乙個事務 則支援當前事務。如果沒有事務則非事務執行。3.propagation mandatory 如果已經存在乙個事務 則支援當前事務。如果沒有...

spring事務傳播特性

spring事務傳播特性 事務傳播行為就是多個事務方法相互呼叫時,事務如何在這些方法間傳播。spring支援7種事務傳播行為 spring 預設的事務傳播行為是 propagation required,它適合於絕大多數的情況。假設 servivex methodx 都工作在事務環境下 即都被 sp...

Spring事務傳播特性

傳播性值描述 propagation required 0當前有事務就用當前的,沒有就用新的 propagation supports 1事務可有可無,不是必須的 propagation mandatory 2當前一定要有事務,不然就拋異常 propagation requires new 3無論是...