zoukankan      html  css  js  c++  java
  • @Transactional 失效

    1.Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用。

     @Transactional
        void insertTestWrongModifier() {
            int re = testMapper.insert(new Test(10,20,30));
            if (re > 0) {
                throw new NeedToInterceptException("need intercept");
            }
            testMapper.insert(new Test(210,20,30));
        }

    2.在类内部调用类内部@Transactional标注的方法。这种情况下也会导致事务不开启

    @Component
    public class TestServiceImpl implements TestService {
        @Resource
        TestMapper testMapper;

        @Transactional
        public void insertTestInnerInvoke() {
            //正常public修饰符的事务方法
            int re = testMapper.insert(new Test(10,20,30));
            if (re > 0) {
                throw new NeedToInterceptException("need intercept");
            }
            testMapper.insert(new Test(210,20,30));
        }


        public void testInnerInvoke(){
            //类内部调用@Transactional标注的方法。
            insertTestInnerInvoke();
        }

    }

    3.事务方法内部捕捉了异常,没有抛出新的异常,导致事务操作不会进行回滚。

    @Component
    public class TestServiceImpl implements TestService {
        @Resource
        TestMapper testMapper;

        @Transactional
        public void insertTestCatchException() {
            try {
                int re = testMapper.insert(new Test(10,20,30));
                if (re > 0) {
                    //运行期间抛异常
                    throw new NeedToInterceptException("need intercept");
                }
                testMapper.insert(new Test(210,20,30));
            }catch (Exception e){
                System.out.println("i catch exception");
            }
        }
        
    }

  • 相关阅读:
    Array方面Js底层代码学习记录
    DOM 节点
    跨域
    狂雨cms代码审计:后台文件包含getshell
    在PHP一句话木马使用过程中的种种坑点分析
    记对某CMS的一次代码审计
    通达OA任意文件上传并利用文件包含导致远程代码执行漏洞分析
    DedeCMS V5.7 SP2后台存在代码执行漏洞
    zzzcms(php) v1.7.5 前台SQL注入及其他
    权限维持及后门持久化技巧总结
  • 原文地址:https://www.cnblogs.com/KL2016/p/14682699.html
Copyright © 2011-2022 走看看