关于Spring MVC事物管理遇到的问题,
环境:
JDK:1.8
Tomcat:8.5
maven:3.3.9
测试接口时,发现如下警告:

Creating a new SqlSession
[2019/07/08 18:10:43,687] [DEBUG] [org.mybatis.spring.SqlSessionUtils:150] - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@189a1f57] was not registered for synchronization because synchronization is not active
[org.mybatis.spring.transaction.SpringManagedTransaction:89] - JDBC Connection [oracle.jdbc.driver.OracleConnection@25a8c3f3] will not be managed by Spring

意思是事物不受spring管理,排查问题,这里排查的顺序是:

检查配置文件

springmvc中大部分会使用声明式事物,我们要检查下配置是否正确,附上我的配置
application.xml文件

<!-- spring mvc 回滚 配置 --><bean name="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><aop:aspectj-autoproxy /><tx:annotation-driven transaction-manager="transactionManager" /><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="delete*" propagation="REQUIRED" read-only="false"rollback-for="java.lang.Exception" /><tx:method name="insert*" propagation="REQUIRED" read-only="false"rollback-for="java.lang.Exception" /><tx:method name="update*" propagation="REQUIRED" read-only="false"rollback-for="java.lang.Exception" /><tx:method name="save*" propagation="REQUIRED" read-only="false"rollback-for="java.lang.Exception" /><tx:method name="add*" propagation="REQUIRED" read-only="false"rollback-for="java.lang.Exception" /><tx:method name="change*" propagation="REQUIRED" read-only="false"rollback-for="java.lang.Exception" /><!-- <tx:method name="*" propagation="REQUIRED" read-only="true"/> --></tx:attributes></tx:advice><!-- proxy-target-class属性值决定是基于接口的还是基于类的代理被创建。如果proxy-target-class 属性值被设置为true,那么基于类的代理将起作用(这时需要cglib库)。 如果proxy-target-class属值被设置为false或者这个属性被省略,那么标准的JDK 基于接口的代理 --><aop:config proxy-target-class="true"><aop:pointcut id="pc"expression="execution(* com.aaa.service..*(..))" /><aop:advisor pointcut-ref="pc" advice-ref="txAdvice" /></aop:config><context:component-scan base-package="com.aaa.service.impl" />

spring-mvc.xml文件

 <!-- 注解扫描包 --><context:component-scan base-package="com.aaa.controller" /><context:component-scan base-package="com.aaa.service.impl" />

发现了impl重复扫描

在两个文件都添加了扫描,去掉后重启,

[DEBUG] [org.mybatis.spring.transaction.SpringManagedTransaction:89] - JDBC Connection [oracle.jdbc.driver.OracleConnection@40467c2d] will be managed by Spring

控制台显示此时事务收到spring的管理,
在方法末尾添加

int test = 9/0;

进行事务测试,数据并没有被加入库中,解决问题。

遇到此类问题

  1. 查看配置文件是否正确,尤其是切面语句
  2. 查看是否和我一样出现重复扫描问题
  3. 检查是否在实现层使用了catch语句而没有抛出异常,如必要使用catch请在catch内抛出RuntimeException
  4. 是否使用了this调用了非代理对象
  5. 使用注解的方法是否为非public方法
  6. 数据库是否使用了非InnoDB引擎

will not be managed by Spring相关推荐

  1. JDBC Connection [com.mysql.jdbc.Connection@2bbf4094] will not be managed by Spring 的一个可能错误

    下面展示一些 内联代码片. // A code block var foo = 'bar'; 20:57:09,712 DEBUG SpringManagedTransaction:86 - JDBC ...

  2. 报错JDBC Connection [com.mysql.jdbc.JDBC4Connection@184c65da] will not be managed by Spring

    折腾了一个下午,报了这个错,现在找出原因了,就是密码错误,不要避开md5(不要直接在数据库加入个可见的密码用来登录) 先注册,记住注册的密码,在用这个密码,登录 不要用这种密码登录 2018-04-2 ...

  3. JDBC Connection... will not be managed by Spring

    问题描述 通过请求查询分类数据.之前运行没有问题,后来因为配置 gateway 进行动态路由没有生效,出现 no available server for server ,然后根据官网(https:/ ...

  4. Spring 项目运行提示错误 Not a managed type

    在启动 Spring 项目的时候提示下面的错误信息. 问题和原因 这个问题的原因是你的类没有在 Spring 管理的容器中注册. 主要原因是上面的包的路径不正确. 修改上面的包的路径后重启服务就可以解 ...

  5. Spring基础专题——第八章(事务)

    目标,去年一年比较懒吧,所以今年我希望我的知识可以分享给正在奋斗中的互联网开发人员,以及未来想往架构师上走的道友们我们一起进步,从一个互联网职场小白到一个沪漂湿人,一路让我知道分享是一件多么重要的事情 ...

  6. Spring基础专题——第七章(持久层整合)

    前言:去年到现在一直没有很好的时间完成这个spring基础+源码的博客目标,去年一年比较懒吧,所以今年我希望我的知识可以分享给正在奋斗中的互联网开发人员,以及未来想往架构师上走的道友们我们一起进步,从 ...

  7. spring@PropertySource用法

    测试例子 packagecom.hjzgg.auth.config;importorg.springframework.beans.factory.annotation.Autowired;impor ...

  8. Spring Security Architecture--官方

    原文地址:https://spring.io/guides/topicals/spring-security-architecture/ Table of contents Authenticatio ...

  9. spring + mybatis 注解 @Transactional失效

    1.问题 在使用@Transactional注解管理事务的时候会出现很多错误,比如: *** was not registered for synchronization because synchr ...

最新文章

  1. JAVAEclipse:could not find the main class,program will exit!
  2. 详解JVM内存管理与垃圾回收机制3 - JVM中对象的内存布局
  3. 【Android】adb架构(客户端(shell/ddms/adt)+本地服务器+daemon)
  4. linux中断响应时间太慢_linux+arm系统学习与基础学习
  5. Tensorflow源码解析2 -- 前后端连接的桥梁 - Session 1
  6. java讲对象放在常量池的方法_java的常量池里面都放了些神马东西
  7. 在JavaScript中仿真Java的enum
  8. CTR介绍,数据集往往为表格形式,训练集使用历史的日志数据,然后进行特征归一化、离散化和特征哈希等操作,最终一条训练集为一行多列的二分类任务。
  9. 【车牌识别】基于matlab GUI模板匹配车牌库识别【含Matlab源码 416期】
  10. 51单片机的定时器与计数器
  11. Linux创建.txt文件
  12. aria2最新tracker服务器,【无灯+Hiboy】padavan下自动更新aria2的BT tracker 服务器列表...
  13. 去除测序reads中的接头:adaptor
  14. TopBase_Knowledge_Graph
  15. 微信小程序开发手记1.0
  16. Qt在mac上的字体
  17. 类美团外卖、骑手、类快递取餐柜、整合菜品供应商、前厅、后厨、配送、智能厨电设备的智慧餐饮业务
  18. 晨之替——谷川 俊太郎
  19. 在Excel中使用VBA来筛选数据
  20. twemproxy配置详解

热门文章

  1. K - Oulipo
  2. 第1章-为什么选择阿里云学生机
  3. 怎样才能批量查询网站的谷歌PR权重?把手教你批量查询网站谷歌PR权重值
  4. 数据库学习(mysql)----一些理论
  5. css中创建主轴方向,flex-direction
  6. HTML期末大作业—— 游戏网页(5个页面) ~ 全屏游戏美术大赛作品征集网页 HTML+CSS+JS ~ web课程设计网页规划与设计...
  7. 美国在线地图软件测评:谷歌居首必应次之
  8. 港科夜闻|香港科大线上校友日:趣味探索科学奥秘
  9. LM321 低功耗单运算放大器 1MHZ增益带宽积 用于充电器 适配器
  10. NAS-Bert——确保One-shot与Task-agnostic