我正在使用@Transactional来管理交易
@Override
@Transactional
public List<FooBo> save(Foo foo, Foo foo2) {
logger.debug(() -> String.format("FooService.save()"));
repository.save(foo);
return repository1.save(foo2);
}
使用TransactionAspectSupport.currentTransactionInfo()
时我找不到交易ID
还有其他方法吗? (如果Spring维护交易的唯一ID)
更新: 我的场景是我想根据事务ID在静态上下文中放置一些信息。交易提交后需要该信息。
例如 ..基于事务ID,我想在静态上下文中将某些对象放入map中,并且在提交后需要利用这些对象..这就是我的想法
答案 0 :(得分:0)
唯一可行的方法是通过Spring应用程序上下文获取事务管理器,并使用包含自定义ID的新getTransaction()
调用TransactionDefinition
,从而在方法中自行创建事务您可以控制的然后,您将能够使用刚刚为逻辑设置的ID,但只需在完成后手动commit()
或rollback()
进行交易
答案 1 :(得分:0)
我有一个与您类似的问题,并且看到没有解决方案,可能的工作是每个Spring事务都绑定到一个线程,因此请使用线程本地存储或使用唯一的线程ID作为键。 对于这些解决方案,您必须确保在提交时将从线程本地存储中清除TX特定信息。