Bootstrap

@Transactional注解:多个事务嵌套时,独立事务处理

一、需求

在多个事务嵌套使用时,排除事务之间的回滚影响

 

二、解决

在不同服务类的方法中使用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() {
    ...    
}

 

;