zoukankan      html  css  js  c++  java
  • 【事务】【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调用,即可。

  • 相关阅读:
    文件操作
    集合和深浅copy #
    货郎担问题TSP(dp解法)
    luoguP3413 SAC#1
    luoguP3413 SAC#1
    poj1681 Painter's Problem(gauss+dfs判定)
    日常(身怀绝技的大家)
    poj1830 开关问题(gauss)
    poj1830 开关问题(gauss)
    poj1222 EXTENDED LIGHTS OUT(gauss)
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/12773862.html
Copyright © 2011-2022 走看看