spring在transactiondefinition介面中規定了7種型別的事務傳播行為,規定了事務方法和事務方法發生巢狀呼叫時事務如何進行傳播。
種類說明:
propagation_required
如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。
propagation_supports
支援當前事務,如果當前沒有事務,就以非事務方式執行。
propagation_mandatory
使用當前的事務,如果當前沒有事務,就丟擲異常。
propagation_requires_new
新建事務,如果當前存在事務,把當前事務掛起。
propagation_not_supported
以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
propagation_never
以非事務方式執行,如果當前存在事務,則丟擲異常。
propagation_nested
如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與propagation_required類似的操作。
spring事物傳播行為
propagation required 如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。propagation supports 支援當前事務,如果當前沒有事務,就以非事務方式執行。propagation mandatory 使用當前的事務,如果當前沒...
Spring的事物傳播行為
以下討論基於a.methoda 呼叫b.methodb 若b的事務隔離級別為 propagation required 外面影響裡面,裡面不影響外面 若a的方法沒有事務,則建立乙個新事務,若有事務,則加入當前事務。如果a的方法a丟擲異常,則a,b的方法都會回滾,如果b的方法b丟擲異常,則看a有沒有捕...
Spring事物的傳播行為
在service類前加上 transactional,宣告這個service所有方法需要事務管理。每乙個業務方法開始時都會開啟乙個事務。spring預設情況下會對執行期例外 runtimeexception 進行事務回滾。這個例外是unchecked 如果遇到checked意外就不回滾。如何改變預設...