码迷,mamicode.com
首页 > 编程语言 > 详细

Springmvc + mybatis + spring 配置 spring事务处理

时间:2015-08-08 06:32:33      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

今天配置了半天,发现,事物不起效果,主要出现如下错误:

技术分享
org.mybatis.spring.transaction.SpringManagedTransaction] - [JDBC Connection [com.jolbox.bonecp.ConnectionHandle@120fc40] will not be managed by Spring

SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@47eb1b] was not registered for synchronization because synchronization is not active

Closing non transactional SqlSession
技术分享

 

后台看到大象的博文才找到答案,意思就是要排出spring servlet对@service注解的扫描,不然会导致事物配置失效,过滤排除@service注解就行了。

技术分享
Spring MVC启动时的配置文件,包含组件扫描、url映射以及设置freemarker参数,让spring不扫描带有@Service注解的类。为什么要这样设置?因为servlet-context.xml与service-context.xml不是同时加载,如果不进行这样的设置,那么,spring就会将所有带@Service注解的类都扫描到容器中,等到加载service-context.xml的时候,会因为容器已经存在Service类,使得cglib将不对Service进行代理,直接导致的结果就是在service-context中的事务配置不起作用,发生异常时,无法对数据进行回滚。另外能够将REST URL解析为请求映射的是DefaultAnnotationHandlerMapping这个类,它在启动时,对Controller中所有标注了@RequestMapping注解的方法,都放到了一个HandlerMapping对象中,当有请求时,就在这个对象中进行查找是否有与之匹配路径的处理方法,有则执行,没有就会输出一个Not Page Found警告信息。
技术分享

 

 

 

技术分享
1 <!-- 定义控制器注解扫描包路径,控制器注解为 @Controller ,必须排除@Service注解 -->
2     <context:component-scan base-package="com.teshehui.product">
3         <context:include-filter expression="org.springframework.stereotype.Controller" type="annotation" />
4         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
5     </context:component-scan>
技术分享

 

Springmvc + mybatis + spring 配置 spring事务处理

标签:

原文地址:http://www.cnblogs.com/zhenjava/p/4712367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!