私は現在、Springのもとで再利用しようとしているいくつかのレガシーコードを持っています。このコードは他のコードに深くネストされているので、再設計するのは現実的ではなく、多くの状況で呼び出されます。私がしたいのは、Springトランザクションが開始されていればSpringトランザクションを使用することです。それ以外の場合は、引き続き既存の(レガシー)db接続メカニズムを使用してください。私たちの最初の考えは、レガシークラスをBeanにして、注入されたTransactionPlatformManager
を使用することでしたが、それは私たちの状況に密接に関連したメソッドを持っていないようです。いくつかの研究では、SpringにはTransactionSynchronizationManager
というクラスがあり、静的メソッドisActualTransactionActive()
があることがわかりました。私のテストでは、この方法は、春のトランザクションがアクティブであるかどうかを検出する信頼性の高い方法であることを示している:Spring DBトランザクションがTransactionSynchronizationManager.isActualTransactionActive()を使用するよりもアクティブであるかどうかを検出する良い方法はありますか?
@Transactional
注釈なし春のサービスを介して呼び出されると@Transactional
で春のサービスを介して呼び出されると、それは- 偽を返し、それを返します私のレガシー方法では
- 真は、既存の方法と呼ばれる、それは私の質問
偽
ありがとうございました!それは最高です。 – fool4jesus