我有一些遗留代码,现在我想在Spring下重用。这段代码深深地嵌套在其他代码中,因此重新设计是不切实际的,在许多情况下都需要调用它,其中只有某些情况是通过Spring进行的。我想做的是使用Spring事务(如果已启动);否则,请继续使用现有的(传统)数据库连接机制。我们的第一个想法是使遗留类成为一个bean,并使用注入(inject)的TransactionPlatformManager
,但这似乎没有与我们的情况紧密相关的方法。一些研究表明,Spring有一个名为TransactionSynchronizationManager
的类,该类具有静态方法isActualTransactionActive()
。我的测试表明,此方法是检测Spring事务是否处于 Activity 状态的可靠方法:
@Transactional
批注的Spring服务调用时,它返回假@Transactional
调用时,它返回真正的我的问题:有没有更好的方法来检测交易是否处于 Activity 状态?
最佳答案
没有比 TransactionSynchronizationManager.isActualTransactionActive()
更好的方法了。这是spring用于处理事务的实用方法。尽管不建议在代码中使用它,但是对于某些特定情况,您应该-这就是为什么它是公开的。
另一种方法可能是使用实体管理器/ session /连接并检查那里是否存在现有事务,但是我更喜欢同步管理器。
关于spring - 与使用TransactionSynchronizationManager.isActualTransactionActive()相比,有没有更好的方法来检测Spring DB事务是否处于事件状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7083095/