java - `org.springframework.transaction.annotation.Transactional` 的行为

标签 java spring transactions

假设我有以下 2 个类(class)。

class A {
  private B b;

  @Transactional
  public void a(){
    b.b();
    //do a stuff
    throw new RuntimeException("oops");
  }
}

class B {
  @Transactional
  public void b(){
    //do b stuff
  }
}

在这种情况下,方法b()(或b东西)也会回滚吗?

最佳答案

在您的情况下,它将被回滚。

如果您的 B b; 由 Spring Autowiring (在您的情况下似乎不是)和 b() 上的 @Transactional方法具有传播 REQUIRES_NEW (当前默认 - REQUIRE),这意味着不使用现有事务而是启动一个新事务,因此只有在这种情况下,b() 上的提交才不会回滚。

关于java - `org.springframework.transaction.annotation.Transactional` 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43636747/

相关文章:

java - 如何使用spark Streaming从HDFS读取数据?

java - 如何使 spring @Value 属性 session 范围

java - Spring boot 2.1.4 ControllerAdvice 不起作用

java - 多数据源配置

database - 是否需要数据库之外的事务行为?

java - java中的深度优先搜索 - 无法将节点转换为int

java - 为什么我们需要创建原生查询?

Spring security 不支持的配置属性

sql-server - SQL Server中的事务和@@ Error函数

oracle - 触发和约束违反中的自治事务