• mybatis在spring(Controller) 中的事务配置问题


    这两天一直在折腾一个小工具,非常简单的移动端webapp。

    用的是jquery mobile + ssm。

    写的差不多的时候,想到解决事务问题,本来以为非常简单,只要在配置文件中加上相应的mybatis在spring中注解配置即可。

    配置是这样的。

     <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
        <bean id="txManager"
              class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
        <tx:annotation-driven transaction-manager="txManager" proxy-target-class="true" />

    后来发现一直未生效,在调用mapper进行数据库增删查时,一直显示:

    org.mybatis.spring.SqlSessionUtils - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5a3157c4]

    证明取得的SqlSession一直是无事务处理的,后来又试了在捕获异常后,重新再抛出异常等方法,均不生效。

    仔细考虑,应该还是配置文件的问题,

    之前这段事务管理器的配置一直都是放在spring-mybatis.xml中的,再试了一下放在spring-servlet.xml中。重启后,再试,居然生效了,显示日志如下:

    org.mybatis.spring.SqlSessionUtils - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6d344a12]
    ...
    org.springframework.jdbc.datasource.DataSourceTransactionManager - Initiating transaction rollback

    看来还是加载配置的顺序问题,又得到一个经验。

    看来spring的配置是很大的学问。

  • 相关阅读:
    20道JS原理题助你面试一臂之力!
    10实用的JS实用技巧
    10实用的JS实用技巧
    比尔盖茨的30条经典语录
    比尔盖茨的30条经典语录
    成为优秀程序员应该具备的8个特质
    成为优秀程序员应该具备的8个特质
    不懂开发的人员,请不要随意说这功能很容易实现
    不懂开发的人员,请不要随意说这功能很容易实现
    15句乔布斯经典语录(中英文)
  • 原文地址:https://www.cnblogs.com/zhuxiangguo/p/5875755.html
Copyright © 2020-2023  润新知