spring事物傳播性

2021-08-09 22:20:27 字數 549 閱讀 7369

(propagation=propagation.required) :如果有事務, 那麼加入事務, 沒有的話新建乙個(預設情況下)

@transactional(propagation=propagation.not_supported) :容器不為這個方法開啟事務

@transactional(propagation=propagation.requires_new) :不管是否存在事務,都建立乙個新的事務,原來的掛起,新的執行完畢,繼續執行老的事務

@transactional(propagation=propagation.mandatory) :必須在乙個已有的事務中執行,否則丟擲異常

@transactional(propagation=propagation.never) :必須在乙個沒有的事務中執行,否則丟擲異常(與propagation.mandatory相反)

@transactional(propagation=propagation.supports) :如果其他bean呼叫這個方法,在其他bean中宣告事務,那就用事務.如果其他bean沒有宣告事務,那就不用事務.

spring事物傳播行為

propagation required 如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。propagation supports 支援當前事務,如果當前沒有事務,就以非事務方式執行。propagation mandatory 使用當前的事務,如果當前沒...

Spring事物的傳播

spring的事物對於同乙個類內部呼叫是不會生效的。比如乙個servicea,裡面有個方法x 和y 其中x沒有配置事物,而y配置的有實物。如果是乙個沒有事物的serviceb呼叫了servicea的x方法,而在x裡面直接通過this.y 的方式呼叫y方法。那麼y是不會有實物的,就算配置成propag...

Spring的事物傳播行為

以下討論基於a.methoda 呼叫b.methodb 若b的事務隔離級別為 propagation required 外面影響裡面,裡面不影響外面 若a的方法沒有事務,則建立乙個新事務,若有事務,則加入當前事務。如果a的方法a丟擲異常,則a,b的方法都會回滾,如果b的方法b丟擲異常,則看a有沒有捕...