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都可以执行事务的。

  • 相关阅读:
    git分支管理策略
    git解决冲突
    git分支创建和合并
    git连接远程库
    git删除文件
    git撤销修改
    4k测试网站
    Windows10通过TightVNC远程连接Ubuntu18.04
    robot报告合并输出
    python 传参中的*和**
  • 原文地址:https://www.cnblogs.com/attilax/p/15197456.html
Copyright © 2011-2022 走看看