簡體   English   中英

由另一個 class 調用的同一 class 中的方法調用的事務方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM