本篇文章给大家带来的内容是关于事务无法被spring容器管理的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
最近在做一个小项目 是springmvc mybatis 的框架 每次在控制台日志会有JDBC Connection [com.mysql.jdbc.JDBC4Connection@59dfe4bc] will not be managed by Spring 输出
说明事务配置肯定存在问题,我就去翻看了一下配置文件 发现配置了注解方式的事务看了下代码 也使用了@Transactional注解
所以我就开始思考哪里出了问题 因为之前看过spring 的一些源码和springmvc一下的一些源码 所以有点思考的方向,经过一番思考把问题定位到spring配置文件
以及springmvc配置文件
spring配置文件中的扫描的 bean 添加事务注解 后 spring 会为它添加代理 具有事务的能力,springmvc容器启动后和spring容器父子级的关系,getbean的过程是先取子容器的
bean 问题就出在这里,springmvc容器中的bean没有事务处理能力 所以我就在扫描策略上做了一些调整
springmvc配置文件中注解扫描中添加
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
运行项目
spring就可以管理事务了。
以上是事务无法被spring容器管理的解决方法的详细内容。更多信息请关注PHP中文网其他相关文章!