查找spring @Transactional

时间:2018-12-20 09:15:04

标签: spring-boot spring-transactions

我正在使用@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中,并且在提交后需要利用这些对象..这就是我的想法

2 个答案:

答案 0 :(得分:0)

唯一可行的方法是通过Spring应用程序上下文获取事务管理器,并使用包含自定义ID的新getTransaction()调用TransactionDefinition,从而在方法中自行创建事务您可以控制的然后,您将能够使用刚刚为逻辑设置的ID,但只需在完成后手动commit()rollback()进行交易

答案 1 :(得分:0)

我有一个与您类似的问题,并且看到没有解决方案,可能的工作是每个Spring事务都绑定到一个线程,因此请使用线程本地存储或使用唯一的线程ID作为键。 对于这些解决方案,您必须确保在提交时将从线程本地存储中清除TX特定信息。