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的配置是很大的學問。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM