私は初めてSpringを試していますが、@ Transactionalに問題があります。私のアプリでは、例外のログを、例えばmain()
までバブリングするのではなく、メソッドに記録する必要がある部分があります。ただし、@Transactionalというラベルの付いたメソッドは、例外が発生した場合にはロールバックされません。例外が発生した場合ので、私の理解から、トランザクションがロールバックされることはありません短い、この文句を言わないの仕事で@Transactionalとログを結合する簡単な方法はありますか?
@Transactional
public void doStuff() {
try {
//Do something that might cause an Exception
} catch (Exception e) {
log.error("Exception when trying to do stuff", e);
}
}
。私が思い付くことができ
唯一のソリューション:
public void doStuff() {
try {
doStuff0();
} catch (Exception e) {
log.error("Error encountered while attempting to join servers", e);
}
}
@Transactional
protected void doStuff0() {
//Do something that might cause an Exception
}
しかし醜いですが、私は好きではないパターンを使用し、ほぼ倍くらいのコードのように、この例です。
例外をログに記録し、トランザクションをロールバックする別の方法はありますか?
あなたの解決策は、JDKプロキシでは動作しません。 – Affe