如果调用在 Spring 中抛出 RuntimeException 的私有方法,@Transactional 方法是否应该回滚?
Should @Transactional method roll back in case of calling a private method which throws RuntimeException in Spring?
事务应该回滚到这里吗?
@Service
public class Serv {
@Transactional
public void method1() {
method2();
}
private void method2(){
throw new RuntimeException();
}
}
还是取决于什么?
(在今天之前,我对所描述的行为有 100% 的把握。但是面试官说这要看情况。我不同意他的看法,但这当然没有帮助。)
optimal/usual 结果如您回答的那样回滚,但面试官说的一般陈述为 这取决于
也许面试官的意思是检查你是否知道它什么时候不会按预期回滚
意思是你不应该假设 @Transactional
确实在工作,应该首先检查它,因为如果 @Transactional
不工作就没有回滚。
例如,在 calling transactional method in same class 的情况下,如果在同一个 class @Transactional
中从 method3() 调用 method1() 将不起作用并且不会回滚
事务应该回滚到这里吗?
@Service
public class Serv {
@Transactional
public void method1() {
method2();
}
private void method2(){
throw new RuntimeException();
}
}
还是取决于什么?
(在今天之前,我对所描述的行为有 100% 的把握。但是面试官说这要看情况。我不同意他的看法,但这当然没有帮助。)
optimal/usual 结果如您回答的那样回滚,但面试官说的一般陈述为 这取决于
也许面试官的意思是检查你是否知道它什么时候不会按预期回滚
意思是你不应该假设 @Transactional
确实在工作,应该首先检查它,因为如果 @Transactional
不工作就没有回滚。
例如,在 calling transactional method in same class 的情况下,如果在同一个 class @Transactional
中从 method3() 调用 method1() 将不起作用并且不会回滚