我有代碼事務劃分編程。春季編程交易
目前我的隔離度設置爲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