Spring @交易服务。如果它调用另一个@Transactional 服务会发生什么?
Spring @Transactional Service. What happens if it calls another @Transactional Service?
使用 Spring,我达到了以下场景。
我有一个服务必须是 @Transactional
因为它调用了几个 DAO。但它也会调用其他已经 @Transactional
.
的服务
不知何故,我将调用嵌套的 @Transactional
服务。
Spring会管理好吗?
@Transactional
没有任何显式参数使用 propagation = REQUIRED
。这意味着:
- 如果当前线程中没有事务,则会创建一个新的事务
- 如果有交易,就会使用
用 @Transactional
注释的第二个服务(嵌套服务)将在与第一个服务(外部服务)相同的事务中执行。您无需执行任何操作。
在某些情况下,如果您想明确地将嵌套调用与外部调用分开,您可以使用 propagation = REQUIRES_NEW
.
使用 Spring,我达到了以下场景。
我有一个服务必须是 @Transactional
因为它调用了几个 DAO。但它也会调用其他已经 @Transactional
.
不知何故,我将调用嵌套的 @Transactional
服务。
Spring会管理好吗?
@Transactional
没有任何显式参数使用 propagation = REQUIRED
。这意味着:
- 如果当前线程中没有事务,则会创建一个新的事务
- 如果有交易,就会使用
用 @Transactional
注释的第二个服务(嵌套服务)将在与第一个服务(外部服务)相同的事务中执行。您无需执行任何操作。
在某些情况下,如果您想明确地将嵌套调用与外部调用分开,您可以使用 propagation = REQUIRES_NEW
.