我有以编程方式划分事务的代码。
目前,我已将隔离设置为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:
支持当前交易;如果不存在,请创建一个新的。