【事务】【spring boot】 调用 本service中的方法 / 调用同一个类中的方法导致事务回滚失败的问题

调用本类中的方法,事务回滚失败的问题。

错误调用方式:

@Service
public class BaseServiceImpl implements BaseService {
    
    @Override
    @Transactional
    public void saveBaseInfo() {
        BaseRequestBean baseRequestBean = new BaseRequestBean();
        saveA(baseRequestBean);
        saveB();
    }


    private void  saveA(BaseRequestBean baseRequestBean){
        baseDao.insert(baseRequestBean);
    }


    private void  saveB(){
        base222Dao.insert();
    }
}

错误原因:

调用方法saveA  和  saveB  是通过 实例对象调用的,而非Spring代理的Bean。

正确调用方法:

@Service
public class BaseServiceImpl implements BaseService {

    @Autowired
    BaseServiceImpl baseService;

    @Override
    @Transactional
    public void saveBaseInfo() {
        BaseRequestBean baseRequestBean = new BaseRequestBean();
        baseService.saveA(baseRequestBean);
        baseService.saveB();
    }


    private void  saveA(BaseRequestBean baseRequestBean){
        baseDao.insert(baseRequestBean);
    }


    private void  saveB(){
        base222Dao.insert();
    }
}

原因:

通过注入Bean调用,即可。

原文地址:https://www.cnblogs.com/sxdcgaq8080/p/12773862.html