@ Transactional方法应该回滚,以防在Spring中调用引发RuntimeException的私有方法吗?

问题描述 投票:2回答:1

交易应该回滚到这里吗?

@Service
public class Serv {
    @Transactional
    public void method1() {
        method2();
    }
    private void method2(){
        throw new RuntimeException();
    }
}

或者它取决于什么?

((在今天之前,我对所描述的行为有100%的把握。但是,一名面试官说这要视情况而定。我不同意他的看法,但当然没有帮助。)

java spring transactions rollback unchecked-exception
1个回答
1
投票

最佳/通常的结果是在您回答时回滚,但面试官说一般性陈述为取决于

也许面试官打算检查您是否知道何时不会按预期进行回滚

意味着您不应该假设@Transactional确实在工作,应该首先检查它,因为如果@Transactional不在工作,则不会回滚。

例如,在calling transactional method in same class的情况下,如果从同一类的method3()中调用method1(),则@Transactional将不起作用,也不会回滚

© www.soinside.com 2019 - 2024. All rights reserved.