有没有比使用TransactionSynchronizationManager.isActualTransactionActive()更好的方法来检测Spring DB事务是否处于活动状态?
我有一些遗留代码,我现在正试图在Spring下重用它们。此代码深入嵌套在其他代码中,因此重新设计是不实际的,在许多情况下都会调用它,只有一些情况是通过Spring调用的。我想做的是使用Spring事务(如果已经启动);否则,请继续使用现有(传统)db连接机制。我们的第一个想法是将遗留类变成bean,并使用注入的有没有比使用TransactionSynchronizationManager.isActualTransactionActive()更好的方法来检测Spring DB事务是否处于活动状态?,spring,transactions,Spring,Transactions,我有一些遗留代码,我现在正试图在Spring下重用它们。此代码深入嵌套在其他代码中,因此重新设计是不实际的,在许多情况下都会调用它,只有一些情况是通过Spring调用的。我想做的是使用Spring事务(如果已经启动);否则,请继续使用现有(传统)db连接机制。我们的第一个想法是将遗留类变成bean,并使用注入的TransactionPlatformManager,但这似乎没有任何与我们的情况相关的方法。一些研究表明Spring有一个名为TransactionSynchronizationMana
TransactionPlatformManager
,但这似乎没有任何与我们的情况相关的方法。一些研究表明Spring有一个名为TransactionSynchronizationManager
的类,它有一个静态方法isActualTransactionActive()
。我的测试表明,该方法是检测Spring事务是否处于活动状态的可靠方法:
- 当通过Spring服务调用而没有
注释时,它返回false@Transactional
- 使用
通过Spring服务调用时,返回true@Transactional
- 在我的名为existing way的遗留方法中,它返回false