zoukankan      html  css  js  c++  java
  • Springmvc + mybatis + spring 配置,spring事物

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

    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>

    参考: Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二) 

  • 相关阅读:
    WebService基于SoapHeader实现安全认证
    js中SetInterval与setTimeout用法
    Fiddler 教程
    jQuery 的 serializeArray()、serialize() 方法
    Javascript中Array.prototype.map()详解
    MS DOS 命令大全
    Chrome的JS调试工具
    jquery插件之DataTables 参数介绍
    C#中的Params、ref、out的区别
    C#记录日志、获取枚举值 等通用函数列表
  • 原文地址:https://www.cnblogs.com/xunux/p/4388124.html
Copyright © 2011-2022 走看看