假设我有以下 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/