• 事务(十二)


    spring 事务不生效的几种情况

    情况(一):

     1 /**
     2  * @Description //lf 事务不生效 情况 (一)
     3  **/
     4 @Override
     5 public boolean ta(Config config) {
     6     //lf 当没有 @Transactional 注解的方法(ta)调用添加 @Transactional 注解的方法(tb)
     7     // 这时调用完成后 ta 抛出异常,
     8     // @Transactional原理是基于spring aop,aop又是动态代理模式的实现 内部调用,没有走代理,
     9       //   用的是this
    10     
    11     tb(config);
    12     int a=1/0;
    13     return true;
    14 }
    15 @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
    16 public Boolean tb(Config config){
    17     save(config);
    18     return true;
    19 }

    情况(二):

    1   @Transactional(propagation = Propagation.REQUIRED)
    2     public Boolean tb(Config config){
    3         // lf  非RuntimeException 错误,都不会回滚。
    4         //  所以这情况需要在 注解里添加rollback = Exception.css, 所有异常都进行回滚
    5         save(config);
    6         return true;
    7     }

    情况(三):

    这三种情况都不会生效,当然现在idea很只能了,添加这些是不能和@Transactional 注解同时存在的

    所有还有事务注解的方法 一定是public 标识,

    • private 方法无法添加事务管理.
    • final 方法无法添加事务管理.
    • static 方法无法添加事务管理.

    情况(四):

     1   /**
     2      * @Description //lf 事务不生效 情况(四)  
     3      */
     4     @Transactional(propagation = Propagation.REQUIRED)
     5     public boolean ta1(Config config) {
     6         // lf 添加了try{}catch 也不会进行回滚 需要把异常抛出或 设置事务回滚
     7         try {
     8             tb1(config);
     9             int a=1/0;
    10         } catch (Exception e) {
    11             // lf 设置事务回滚
    12             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
    13         }
    14         return true;
    15     }

    转载:https://blog.csdn.net/qq_38380025/article/details/105859817








    带着疑问去思考,然后串联,进而归纳总结,不断追问自己,进行自我辩证,像侦查嫌疑案件一样看待技术问题,漆黑的街道,你我一起寻找线索,你就是技术界大侦探福尔摩斯
  • 相关阅读:
    解决编程开发时候文件命名的苦恼(规范代码 提高可读性)
    react的this.setState没有触发render
    动态修改JS对象的值及React setState
    Antd Select组件结合使用出现must set key for <rc-animate> children问题
    antd Select进阶功能 动态更新、函数防抖
    前端性能优化之重排和重绘
    ES5 map循环一大坑:循环遍历竟然出现逗号!
    Monent.js:强大的日期处理类库
    Docker概览
    Spring boot 集成hessian
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/14531324.html
Copyright © 2020-2023  润新知