我有代码事务划分编程。春季编程交易
目前我的隔离度设置为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();
}
不,它不会因为我第一次调用这个方法时需要一个新的事务。但如果它递归,我不想要另一个新的交易。 – user1555190 2013-02-25 13:37:49
我会以一种只在第一次调用时创建事务的方式来重构代码,也许会将这个方法拉到另一个方法。这比干扰条件传播模式等干净。 – mrembisz 2013-02-25 13:53:12