【问题标题】:Spring @Transactional Service. What happens if it calls another @Transactional Service?Spring @Transactional 服务。如果它调用另一个@Transactional 服务会发生什么?
【发布时间】:2019-10-02 18:14:23
【问题描述】:

使用 Spring,我达到了以下场景。

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

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

Spring 会管理得很好吗?

【问题讨论】:

  • Spring 会将它们全部分组在同一个事务下

标签: java spring transactions spring-transactions


【解决方案1】:

@Transactional 没有任何显式参数使用propagation = REQUIRED。这意味着:

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

带有@Transactional 注释的第二个服务(嵌套的)将在与第一个(外部的)相同的事务中执行。你不需要做任何事情。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 2016-02-14
    • 2012-02-19
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多