zoukankan      html  css  js  c++  java
  • Atitit Spring事务配置不起作用可能出现的问题: .是否是数据库引擎设置不对造成的【笔者就遇到了这个问题,由于笔者使用的是mysql数据,但是在创建表的时候引擎默认(mysql中引擎默认为

    Atitit Spring事务配置不起作用可能出现的问题:

     

    .是否是数据库引擎设置不对造成的【笔者就遇到了这个问题,由于笔者使用的是mysql数据,但是在创建表的时候引擎默认(mysql中引擎默认为MyISAM,是不支持事务操作的),需要修改为InnoDB,就可以支持事务操作了

    1. 入口函数必须是public,否则事务不起作用。这一点由Spring的AOP特性决定的。

    1、首先使用如下代码 确认你的bean 是代理对象吗?

    AopUtils.isAopProxy()

    AopUtils.isCglibProxy() //cglib

    AopUtils.isJdkDynamicProxy() //jdk动态代理

     

    如果不是 那么就是切入点配置出错了 或者如果你使用了springmvc,可能是context:component-scan重复扫描引起的:

    UserService userService = context.getBean(UserService.class);

    // 调用userService的方法执行

    userService.test();

    userService.addUser1("  user2222");

     

    boolean isAopProxy=AopUtils.isAopProxy(userService);

    boolean isCglibProxy=AopUtils.isCglibProxy(userService);

    boolean isJdkDynamicProxy=AopUtils.isJdkDynamicProxy(userService);

       Map m=Maps.newConcurrentMap();

       m.put("isAopProxy", isAopProxy);   m.put("isCglibProxy", isCglibProxy);   m.put("isJdkDynamicProxy", isJdkDynamicProxy);

       System.out.println(JSON.toJSONString(m));//{"isCglibProxy":true,"isAopProxy":true,"isJdkDynamicProxy":false}

     

    2、如果是aop代理,那么说明代理成功,那么可能是如使用mysql且引擎是MyISAM造成的(因为不支持事务),改成InnoDB即可。

     

    3、 如果你是基于类的代理,而非接口,如果想代理父类里的,可以用

    execution(* com.sishuok.es..service..*+.*(..))  

    Spring事务不起作用 问题汇总 - 《亿级流量网站架构核心技术》_ - ITeye博客.html

    是不是同一class没关系的。。只有一个service的俩个method都可以执行事务的。

  • 相关阅读:
    导包Scanner类---Java
    标准类组成---Java
    Educational Codeforces Round 54 (Rated for Div. 2) A. Minimizing the String
    [专题总结] 二分搜索专题
    [最大权森林] [POJ] 3723 Conscription
    [模板] 快读快写
    [模板] 常用数论 -> gcd、exgcd、乘法逆元、快速幂、快速乘、筛素数、快速求逆元、组合数
    [模板] 堆 heap
    牛客小白月赛8 F-数列操作 (有序表)
    [模板] 字符串处理函数
  • 原文地址:https://www.cnblogs.com/attilax/p/15197456.html
Copyright © 2011-2022 走看看