我有以编程方式划分事务的代码。
目前我将隔离设置为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();
}