一、需求
在多个事务嵌套使用时,排除事务之间的回滚影响
二、解决
在不同服务类的方法中使用Transactional的propagation属性来实现隔离事务。(注意两个方法不在同一个服务类中)
Propagation.REQUIRES_NEW即说明该事务开启单独事务,不受其他事务影响
// 服务类A
@Autowired
private ABizService aBizService;
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public String insert(FacedbInfoDTO facedbInfoDTO) throws ServiceException {
...
aBizService.generateId();
}
// 服务类B
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public String generateId() {
...
}