プログラムでトランザクションを区切ったコードがあります。
現在、分離を に設定していPROPAGATION_REQUIRES_NEW
ます。これは正常に機能しますが、再帰的な動作に対応する必要があり、そのために同じスレッドからメソッドが再度呼び出された場合に新しいトランザクションを作成したくありません。
1) メソッドが初めて呼び出された場合、現在のトランザクションを中断し、新しいトランザクションを作成します。PROPAGATION_REQUIRES_NEW
2) 再帰的に呼び出された場合。新しいトランザクションを作成しないでください。
例:私が持っていて、それが機能するのは. 私が望まないのは、entrancy AtomicInterger の使用です。何か案は?
public methoda() {
Integer entrancy = rentrancy.incrementAndGet();
if(entrancy == 1) {
this.transactionTemplate.setPropagationBehavior(..PROPAGATION_REQUIRES_NEW);
}
this.transactionTemplate.execute(new TransactionCallback<E>(){
.......
.......
}
entrancy.decrementAndGet();
}