- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Spring 的 TranscationSynchronizationManager 有点困惑isActualTransactionActive()
和 getCurrentTransactionName()
方法。
给定一个非事务性服务
@Service
public MyServiceImpl implements MyService {
public void someMethod() {
boolean isActive = TransactionSynchronizationManager.isActualTransactionActive();
String name = TransactionSynchronizationManager.getCurrentTransactionName();
}
}
这里我看到 isActive
是 false
,这是正确的,在另一边调用 getCurrentTransactionName()
我看到交易名称(它打印 de.mycompany.service.MyServiceImpl.someMethod
)。
那么如果没有交易,为什么会有当前交易名呢?它不应该是 null
吗?
最佳答案
查看源代码PlatformTransactionManager.getTransaction()
,调用AbstractPlatformTransactionManager.prepareTransactionStatus()
,调用AbstractPlatformTransactionManager.prepareSynchronization()
似乎当前事务定义的名称被传递给TransactionSynchronizationManager.setCurrentTransactionName()
,无论是否存在实际事务。
因此,在未启动实际事务的情况下(例如传播 NEVER
或 SUPPORTS
),您提到的混淆可能会发生。该方法可能更好地理解为获取当前事务定义名称
关于java - Spring TransactionSynchronizationManager isActualTransactionActive() 和 getCurrentTransactionName() 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32524327/
我对Spring中的事务资源管理有些困惑。即,我对TransactionSynchronizationManager.isActualTransactionActive和TransactionSync
我对 Spring 的 TranscationSynchronizationManager 有点困惑isActualTransactionActive() 和 getCurrentTransactio
我现在尝试在 Spring 下重用一些遗留代码。此代码深深嵌套在其他代码中,因此重新设计并不实际,并且在许多情况下都会调用,其中只有一部分是通过 Spring 调用的。我想做的是使用 Spring 事
我是一名优秀的程序员,十分优秀!