2017-08-11 97 views
1

我正在學習Spring事務管理。 我有兩個問題。 如果我有一個方法:春季交易時調用私人方法

@Transactional 
public method1(){ 
method2() 
} 

public method2(){ 
dao.save() 
} 

如果在方法2異常,會不會有一個回退?

另一個問題: 如果我有一個方法:

@Transactional 
public method1(){ 
method2() 
} 

private void method2(){ 
dao.save() 
} 

如果在方法2異常,會不會有一個回退?謝謝。

+0

回滾將在那裏爲這兩種情況 – StanislavL

回答

0

是的,會有一個回滾。 私有方法將在相同的事務中運行。您應該知道,您不能擁有@Transactional私有方法。沒有引發任何錯誤,它將不起作用。此行爲Spring Docs解釋說:

由於Spring的AOP框架的基於代理的性質,內 調用目標對象是定義不攔截。對於JDK代理, 只能對代理上的公共接口方法調用進行攔截。

1

對兩者都是。事務性方法意味着在方法的整個運行時期間不得有錯誤。

如果您從內部調用的某個方法出現錯誤,這些錯誤將被傳播並使事務失敗並回滾。

+0

非常感謝。 – brest1007