spring + mybatis 注解 @Transactional失效
2024-09-02 04:29:14
1.问题
在使用@Transactional注解管理事务的时候会出现很多错误,比如:
*** was not registered for synchronization because synchronization is not active
或者
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3ca5cba7]
JDBC Connection [com.mysql.jdbc.JDBC4Connection@79436e0a] will not be managed by Spring
总之就是事务没有被spring管理,注解@Transactional失效.
2.原因:
重复扫描包的问题. 因为springmvc的配置文件已经扫描了service和controller注解,而spring的配置文件又扫描了一遍,所以会出错.
spring 通过 cglib 生成了带有事务功能的代理类.
但是spring mvc 在扫描一遍又重新生成了 service 层的不带事务功能的代理类,把之前的代理类给覆盖掉了,
所以会导致事务失效.
因此解决就是把springmvc扫描service给过滤掉就可以了,
3.解决:
让springmvc的配置文件只扫描controller
<context:component-scan base-package="com.fyq" >
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Service" />
</context:component-scan>
通过 filter 把service注解给过滤掉.
同理 spring 的配置文件只扫描service层,把controller给过滤掉.
<context:component-scan base-package="com.fyq" >
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
该用spring-boot了...
最新文章
- Eclipse里面Outline中图标的含义
- GJM : Unity3D - UI - UI边缘流光特效小技巧 [转载]
- NTFS 权限讲解 ACL
- php file_get_contents 绕过
- 使用JS来实现验证码功能
- TortoiseGit连接github不用每次输入用户名和密码的方法
- java中动态反射
- APP的测试过程和重点
- vscode中使用markdown
- LeetCode算法题-Rotate String(Java实现)
- 617A
- WebService调用SSAS教程
- PowerShell工作流学习-6-向脚本工作流添加检查点
- CentOS 安装最新版本 Git
- android中include
- quora 的东西就是不一样
- 时间序列 ARIMA 模型 (三)
- ViewPage+frament不预载入下一个Frament数据解决的方法
- Bug笔记:Google Map第一次缩放位置偏移
- Volley的使用
热门文章
- PHP-------抽象和接口
- Web Pages
- java.sql.date和java.util.date的区别和转换
- 撸一个简单的MVVM例子
- Swift:一个基于.NET Core的分布式批处理框架
- 史上最简单的SpringCloud教程 | 第十篇: 高可用的服务注册中心(Finchley版本)
- Nginx负载均衡+代理+ssl+压力测试
- Context initialization failed org.springframework.beans.factory.BeanCreationException
- 阿里云服务器发送邮件失败,25端口被禁用,采用ssl 方式 465端口发送
- 用java集合模拟登录和注册功能