行為解釋
對應的註解使用
propagation_required
(預設)以事務執行,當前有事務則加入事務,無事務則建立事務
@transactional(propagation = propagation.required)
propagation_supports
支援事務執行,如果沒有事務則以非事務執行(實際應用上與不加註解沒什麼去唄,實際上還是有點區別)
@transactional(propagation = propagation.supports)
propagation_mandatory
用於標識乙個方法必須開啟事務使用,否則丟擲異常。此行為在乙個方法強烈需要使用事務管理的時候使用。由周圍事務驅動,本身並不建立事務
@transactional(propagation = propagation.mandatory)
propagation_requires_new
建立乙個新事務,掛起當前事務,當執行完成new事務後返回當前事務,當前事務如果回滾不影響new事務的提交,如果new事務丟擲異常,當前事務方法沒有正確捕獲異常,則全部回滾
@transactional(propagation = propagation.requires_new)
propagation_not_supported
已非事務執行,當前存在事務則掛起
@transactional(propagation = propagation.not_supported)
propagation_never
以非實物執行,如果存在事務則丟擲異常
@transactional(propagation = propagation.never)
propagation_nested
建立乙個新事務,當前事務存在時則加入當前事務作為乙個巢狀事務。
@transactional(propagation = propagation.nested)
serviceacatch(e)
}} serviceb
}
springboot預設開啟了cglibproxy
檢視spring的bean當前使用的**模式預設不使用**的,當類或者類中某個方法加入事務的時候會使用**事務生效場景
加了事務註解的方法,理論上只有一種情況生效,那就是通過**類呼叫事務方法
aopcontext.currentproxy()獲取當前類的**類**:
serviceacatch(e)
}public void aa()
} serviceb
public void bb(){}
}
以下呼叫過程及事務是否生效 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無論是...