will not be managed by Spring
关于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;
进行事务测试,数据并没有被加入库中,解决问题。
遇到此类问题
- 查看配置文件是否正确,尤其是切面语句
- 查看是否和我一样出现重复扫描问题
- 检查是否在实现层使用了catch语句而没有抛出异常,如必要使用catch请在catch内抛出RuntimeException
- 是否使用了this调用了非代理对象
- 使用注解的方法是否为非public方法
- 数据库是否使用了非InnoDB引擎
will not be managed by Spring相关推荐
- 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 ...
- 报错JDBC Connection [com.mysql.jdbc.JDBC4Connection@184c65da] will not be managed by Spring
折腾了一个下午,报了这个错,现在找出原因了,就是密码错误,不要避开md5(不要直接在数据库加入个可见的密码用来登录) 先注册,记住注册的密码,在用这个密码,登录 不要用这种密码登录 2018-04-2 ...
- JDBC Connection... will not be managed by Spring
问题描述 通过请求查询分类数据.之前运行没有问题,后来因为配置 gateway 进行动态路由没有生效,出现 no available server for server ,然后根据官网(https:/ ...
- Spring 项目运行提示错误 Not a managed type
在启动 Spring 项目的时候提示下面的错误信息. 问题和原因 这个问题的原因是你的类没有在 Spring 管理的容器中注册. 主要原因是上面的包的路径不正确. 修改上面的包的路径后重启服务就可以解 ...
- Spring基础专题——第八章(事务)
目标,去年一年比较懒吧,所以今年我希望我的知识可以分享给正在奋斗中的互联网开发人员,以及未来想往架构师上走的道友们我们一起进步,从一个互联网职场小白到一个沪漂湿人,一路让我知道分享是一件多么重要的事情 ...
- Spring基础专题——第七章(持久层整合)
前言:去年到现在一直没有很好的时间完成这个spring基础+源码的博客目标,去年一年比较懒吧,所以今年我希望我的知识可以分享给正在奋斗中的互联网开发人员,以及未来想往架构师上走的道友们我们一起进步,从 ...
- spring@PropertySource用法
测试例子 packagecom.hjzgg.auth.config;importorg.springframework.beans.factory.annotation.Autowired;impor ...
- Spring Security Architecture--官方
原文地址:https://spring.io/guides/topicals/spring-security-architecture/ Table of contents Authenticatio ...
- spring + mybatis 注解 @Transactional失效
1.问题 在使用@Transactional注解管理事务的时候会出现很多错误,比如: *** was not registered for synchronization because synchr ...
最新文章
- JAVAEclipse:could not find the main class,program will exit!
- 详解JVM内存管理与垃圾回收机制3 - JVM中对象的内存布局
- 【Android】adb架构(客户端(shell/ddms/adt)+本地服务器+daemon)
- linux中断响应时间太慢_linux+arm系统学习与基础学习
- Tensorflow源码解析2 -- 前后端连接的桥梁 - Session 1
- java讲对象放在常量池的方法_java的常量池里面都放了些神马东西
- 在JavaScript中仿真Java的enum
- CTR介绍,数据集往往为表格形式,训练集使用历史的日志数据,然后进行特征归一化、离散化和特征哈希等操作,最终一条训练集为一行多列的二分类任务。
- 【车牌识别】基于matlab GUI模板匹配车牌库识别【含Matlab源码 416期】
- 51单片机的定时器与计数器
- Linux创建.txt文件
- aria2最新tracker服务器,【无灯+Hiboy】padavan下自动更新aria2的BT tracker 服务器列表...
- 去除测序reads中的接头:adaptor
- TopBase_Knowledge_Graph
- 微信小程序开发手记1.0
- Qt在mac上的字体
- 类美团外卖、骑手、类快递取餐柜、整合菜品供应商、前厅、后厨、配送、智能厨电设备的智慧餐饮业务
- 晨之替——谷川 俊太郎
- 在Excel中使用VBA来筛选数据
- twemproxy配置详解
热门文章
- K - Oulipo
- 第1章-为什么选择阿里云学生机
- 怎样才能批量查询网站的谷歌PR权重?把手教你批量查询网站谷歌PR权重值
- 数据库学习(mysql)----一些理论
- css中创建主轴方向,flex-direction
- HTML期末大作业—— 游戏网页(5个页面) ~ 全屏游戏美术大赛作品征集网页 HTML+CSS+JS ~ web课程设计网页规划与设计...
- 美国在线地图软件测评:谷歌居首必应次之
- 港科夜闻|香港科大线上校友日:趣味探索科学奥秘
- LM321 低功耗单运算放大器 1MHZ增益带宽积 用于充电器 适配器
- NAS-Bert——确保One-shot与Task-agnostic