我学习Spring事务管理。 我有两个问题。 如果我有方法:
@Transactional
public method1(){
method2()
}
public method2(){
dao.save()
}
如果方法2中存在异常,是否会有回滚?
另一个问题: 如果我有方法:
@Transactional
public method1(){
method2()
}
private void method2(){
dao.save()
}
如果方法2中存在异常,是否会有回滚?感谢。
答案 0 :(得分:1)
两者都是。事务方法意味着在方法的整个运行时期间必须没有错误。
如果您从其中调用的某个方法出现错误,则会传播这些错误并使事务失败并回滚。
答案 1 :(得分:0)
是的,会有回滚。
私有方法将在同一事务中运行。您应该知道,您无法使用@Transactional
私有方法。如果不提出任何错误,它将无法工作。 Spring Docs:
由于Spring的AOP框架基于代理的特性,内部调用 根据定义,目标对象不被截获。对于JDK代理, 只能拦截代理上的公共接口方法调用。