Spring事务TransactionSynchronizationManager:isActualTransac
我对Spring中的事务资源管理有点困惑.也就是说,我对TransactionSynchronizationManager.isActualTransactionActive和TransactionSynchronizationManager.isSynchronizationActive的使用感到困惑. 到目前为止,可能不正确,我假设使用isSynchronizationActive(也在Spring代码库中)来确定是否存在由TransactionSynchronizationManager.initSynchronization()启动的活动事务.就我而言,当我们暂停一个事务时,实际的isSynchronizationActive仍然是真的!因此,我认为建立正在运行的事务的正确方法是使用isActualTransactionActive,对吗? 如果是这种情况,isSynchronizationActive方法的实际意义是什么?我理解它会告诉你是否可以添加同步,但我对它告诉我们有关交易的内容有点迷失… 最佳答案
您将注意到TransactionSynchronizationManager的以下字段
和方法
TransactionSynchronizationManager基本上充当TransactionSynchronization的注册表. javadoc说
因此,您首先使用initSynchronization()和registerSynchronization(TransactionSynchronization)初始化并注册TransactionSynchronization.注册这些时,TransactionManager可以启动一个Transaction,并通过setActualTransactionActive(boolean)告诉TransactionSynchronizationManager它是否处于活动状态. 总之,isSynchronizationActive()告诉我们是否已启用TransactionSynchronization,即使没有注册任何TransactionSynchronization实例. isActualTransactionActive()告诉我们实际的Transaction对象是否处于活动状态. TransactionSynchronizationManager javadoc说明
所以不要忽视它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |