我有以编程方式划分事务的代码。

目前,我已将隔离设置为PROPAGATION_REQUIRES_NEW。这样做很好,但是我需要迎合递归行为,因此,如果从同一线程再次调用该方法,则我不希望创建新的事务。

1)如果是第一次调用该方法,请暂停当前事务并创建新事务。 PROPAGATION_REQUIRES_NEW

2)是否递归调用。不要创建新交易。

示例:我所拥有的并且有效的是。我不想要使用AtomicInterger入口。有任何想法吗?

public methoda() {

  Integer entrancy = rentrancy.incrementAndGet();

   if(entrancy == 1) {
          this.transactionTemplate.setPropagationBehavior(..PROPAGATION_REQUIRES_NEW);
   }

   this.transactionTemplate.execute(new TransactionCallback<E>(){
         .......
         .......
   }
   entrancy.decrementAndGet();
}

最佳答案

听起来PROPAGATION_REQUIRED更适合您的目的。从其javadoc:

支持当前交易;如果不存在,请创建一个新的。

10-07 23:36