spring 事務的傳播特性

2022-02-21 10:20:20 字數 1092 閱讀 1679

1.宣告式事物中,乙個類servicea的方法test1()呼叫另乙個類serviceb的方法test2() 要是serviceb的test2()事務配置在xml檔案中為required,又在此方法上加入@transactional(propagation = propagation.not_supported)

則serviceb.test2()的以xml中為主,not_supported就不起作用了。如果方法沒在xml上配置required,則會起作用。

如果是在同一類中呼叫另一方法test2上加 propagation.not_supported ,則test2()的propagation_not_supported失效

2.如果乙個類中乙個方法test1()呼叫此類的另一方法test2(),都是required,要是test2拋異常的話,若test1不catch,則都會回滾,或test1方法catch了異常,則兩個方法都會提交

3.如果乙個類中乙個方法test1()呼叫另乙個類的方法test2(),都是required,要是test2拋異常的話,若test1不catch,則都會回滾,或test1方法catch了異常,則仍然回滾

注意:其中test1不能是在宣告事務中包括的方法 如果包括在裡面則以宣告中的為主

4.如果宣告式事務切面配置方法名為*的事務 為supports,乙個類test1預設調另乙個類test2 required,若test2出異常,則兩個方法都回滾 感覺test1方法預設為supports時 另乙個類test2為required、requires_new時都自動變為required了

5.如果宣告式事務切面配置方法名為*的事務 為not_supported,乙個類test1預設調另乙個類test2 required,若test2出異常,則test2回滾,test1提交

6.如果宣告式事務切面配置方法名為*的事務 為supports,乙個類test1預設調另乙個類test2 required,在test1方法前加入@transactional(propagation = propagation.supports) 若test2出異常,則test2回滾,test1提交

** 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無論是...