查找 spring @Transactional 的事务 ID

Sha*_*oor 5 spring-transactions spring-boot

我正在使用@Transactional 来管理交易

  @Override
  @Transactional
  public List<FooBo> save(Foo foo, Foo foo2) {
    logger.debug(() -> String.format("FooService.save()"));
    repository.save(foo);
    return repository1.save(foo2);
  }
Run Code Online (Sandbox Code Playgroud)

我在使用时找不到交易 ID TransactionAspectSupport.currentTransactionInfo()

还有其他方法吗?(如果 Spring 维护事务的唯一 ID)

更新:我的场景是我想根据事务 ID 在静态上下文中添加一些信息。并在事务提交后需要该信息。

例如..基于事务ID,我想将一些对象放在静态上下文中的地图中,提交后需要利用这些对象..这就是我的想法

tom*_*ty3 0

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