[英]Transactional method called by method in same class called from another class
我有一個事務方法,它被同一個 class 中的方法調用多次(在循環中)。 同一 class 中的此方法由不同 class 中的方法調用。 根據我的調查,當我們在同一個 class 中調用事務方法時,這沒有效果。 使用相同的事務。 但就我而言,是否會使用新的交易?
結構:
A.class - Method A
|-> B.class - Method A
|-> call mutiple times - B.class - @Transactional Method B
你能建議嗎?
我的期望是每次循環遍歷方法 B 時都會創建一個新事務。 我是否需要將方法 B 傳遞給不同的 class? 還是每次都會開始新的交易?
因此,默認情況下,有兩件事可能對您不利。
Spring 的默認 txn 攔截器,這是 AOP 事務的工作方式,不會在同一實例中接收調用。 這可以通過切換到 AspectJ weaving 來改變。 這篇文章有一個很好的解釋https://www.baeldung.com/spring-aop-vs-aspectj IIRC spring 中的默認是 jdk 代理。
Spring 的默認事務注釋將傳播現有的 txns。 因此,如果沒有預先存在的 txn 並且您克服了上述問題,您應該得到您想要的。 如果存在預先存在的 txn,默認情況下會使用它,但可以通過修改@Transactional
注釋上的propagate
參數來更改此行為。 這篇文章有很好的解釋: https://www.baeldung.com/spring-transactional-propagation-isolation
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.