propagation_required 支援當前事務,如果不存在這建立乙個新事務,這是預設的事務管理。
propagation_supports 支援當前事務,如果不存在則已非事務的方式執行
propagation_mandatory 如果存在乙個事務,支援當前事務,如果沒有事務活動則丟擲異常
propagation_requires_new 總是開啟乙個新事務
propagation_not_supported 總是以非事務的方式執行,並掛起任何存在的事務
propagation_never總是以非事務的方式執行,如果存在乙個活動事務則丟擲異常
propagation_nested如果乙個事務存在,則執行在巢狀事務中,如果沒有活動事務,則按照propagation_required屬性執行
1) propagation_required ,預設的spring事務傳播級別,使用該級別的特點是,如果上下文中已經存在事務,那麼就加入到事務中執行,如果當前上下文中不存在事務,則新建事務執行。所以這個級別通常能滿足處理大多數的業務場景。
2)propagation_supports ,從字面意思就知道,supports,支援,該傳播級別的特點是,如果上下文存在事務,則支援事務加入事務,如果沒有事務,則使用非事務的方式執行。所以說,並非所有的包在transactiontemplate.execute中的**都會有事務支援。這個通常是用來處理那些並非原子性的非核心業務邏輯操作。應用場景較少。
3)propagation_mandatory , 該級別的事務要求上下文中必須要存在事務,否則就會丟擲異常!配置該方式的傳播級別是有效的控制上下文呼叫**遺漏新增事務控制的保證手段。比如一段**不能單獨被呼叫執行,但是一旦被呼叫,就必須有事務包含的情況,就可以使用這個傳播級別。
4)propagation_requires_new ,從字面即可知道,new,每次都要乙個新事務,該傳播級別的特點是,每次都會新建乙個事務,並且同時將上下文中的事務掛起,執行當前新建事務完成以後,上下文事務恢復再執行。
5)propagation_not_supported ,這個也可以從字面得知,not supported ,不支援,當前級別的特點就是上下文中存在事務,則掛起事務,執行當前邏輯,結束後恢復上下文的事務。
6)propagation_never ,該事務更嚴格,上面乙個事務傳播級別只是不支援而已,有事務就掛起,而propagation_never傳播級別要求上下文中不能存在事務,一旦有事務,就丟擲runtime異常,強制停止執行!
7)propagation_nested ,字面也可知道,nested,巢狀級別事務。該傳播級別特徵是,如果上下文中存在事務,則巢狀事務執行,如果不存在事務,則新建事務。
Spring的事務傳播屬性
required 業務方法需要在乙個事務中執行。如果方法執行時,已經處在乙個事務中,那麼加入到該事務,否則為自己建立乙個新的事務。not supported 宣告方法不需要事務。如果方法沒有關聯到乙個事務,容器不會為它開啟事務。如果方法在乙個事務中被呼叫,該事務會被掛起,在方法呼叫結束後,原先的事務...
Spring事務的傳播屬性
搜尋 198200.com spring在transactiondefinition介面中規定了7種型別的事務傳播行為。事務傳播行為是spring框架獨有的事務增強特性,他不屬於的事務實際提供方資料庫行為。這是spring為我們提供的強大的工具箱,使用事務傳播行可以為我們的開發工作提供許多便利。但是...
spring事務傳播
採用程式設計式事務 1 getcurrentsession 與opensession 的區別?採用getcurrentsession 建立的session會繫結到當前執行緒中,而採用opensession 建立的session則不會 採用getcurrentsession 建立的session在co...