gpt4 book ai didi

spring - 有没有比使用 TransactionSynchronizationManager.isActualTransactionActive() 更好的方法来检测 Spring DB 事务是否处于事件状态?

转载 作者:IT老高 更新时间:2023-10-28 13:04:33 27 4
gpt4 key购买 nike

我现在尝试在 Spring 下重用一些遗留代码。此代码深深嵌套在其他代码中,因此重新设计并不实际,并且在许多情况下都会调用,其中只有一部分是通过 Spring 调用的。我想做的是使用 Spring 事务(如果已启动);否则,继续使用现有的(遗留)数据库连接机制。我们的第一个想法是让我们的遗留类成为一个 bean 并使用注入(inject)的 TransactionPlatformManager,但这似乎没有任何与我们的情况密切相关的方法。一些研究表明,Spring 有一个名为 TransactionSynchronizationManager 的类,它有一个静态方法 isActualTransactionActive()。我的测试表明此方法是检测 Spring 事务是否处于事件状态的可靠方法:

  • 当通过 Spring 服务调用时没有 @Transactional 注释,它返回 false
  • 使用@Transactional通过Spring服务调用时,返回true
  • 在我称为现有方式的遗留方法中,它返回 false

我的问题:有没有更好的方法来检测交易是否处于事件状态?

最佳答案

没有比 TransactionSynchronizationManager.isActualTransactionActive() 更好的方法了.它是spring用来处理事务的实用方法。尽管不建议在您的代码中使用它,但对于某些特定情况您应该使用它 - 这就是它公开的原因。

另一种方法可能是使用实体管理器/ session /连接并检查那里是否存在现有事务,但我更喜欢同步管理器。

关于spring - 有没有比使用 TransactionSynchronizationManager.isActualTransactionActive() 更好的方法来检测 Spring DB 事务是否处于事件状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7083095/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com