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调用,即可。

  • 相关阅读:
    Orleans 2 实例
    Linux基础1 目录和文件系统
    C#中的异步多线程补充1
    委托的小例子(基本委托,匿名方法,lambda)
    Orleans 1 基本概念
    WPF10 Binding-2
    WPF9 Binding-1
    WPF8 UI布局
    WPF7 布局控件
    软工总结
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/12773862.html
Copyright © 2011-2022 走看看