从内部回滚事务返回后,外部方法回滚两次

时间:2018-12-25 05:22:53

标签: spring-boot rollback transactional

在我的Spring Boot应用程序中,我在服务类中有一个方法,该方法具有来自两个数据库的两个事务。 我的内部方法正确回滚,并向外部方法抛出异常。我注意到在控制台中,它在内部事务回滚后连续记录两个回滚语句。我想不出为什么我的外部方法回滚两次的原因捕获内部方法引发的异常后。 可选:在调试时,我注意到在第二次回滚(包括内部回滚)之后仍然存在2个同步

外部方法和内部方法位于两个不同的@Service注释类中。下面是示例代码。

@Transactional(value = "db1",rollbackFor = Exception.class)
public String outerMethod(){
  try{

    dao1.updateOne();

    service2.innerMethod();
  }catch(Exception e){
     throw new CustomException();
  }   
}

这是内部服务方法

@Transactional(value = "db2",rollbackFor = Exception.class)
public String innerMethod(){
  dao2.updateTwo();
  throw new Exception();
}

0 个答案:

没有答案