春季@交易服务。如果它调用另一个@Transactional服务,会发生什么?

时间:2019-10-02 18:14:23

标签: java spring transactions spring-transactions

使用Spring,我遇到以下情况。

我有一个必须为@Transactional的服务,因为它调用了多个DAO。但它也会调用已经@Transactional的其他服务。

不知何故,我将调用嵌套@Transactional服务。

Spring会管理好吗?

1 个答案:

答案 0 :(得分:2)

没有任何明确参数的

@Transactional使用propagation = REQUIRED。这意味着:

  • 如果当前线程中没有事务,将创建一个新事务
  • 如果有交易,则将使用

@Transactional注释的第二服务(嵌套服务)将在与第一服务(外部服务)相同的事务中执行。您无需执行任何操作。

在某些情况下,如果您想将嵌套调用与外部调用明确分开,则可以使用propagation = REQUIRES_NEW