ssm 使用中的一些问题

1.问题:[org.mybatis.spring.SqlSessionUtils] - Creating a new SqlSession 
[org.mybatis.spring.SqlSessionUtils] - SqlSession[org.apache.ibatis.session.defaults.DefaultSqlSession@1a714e6e] was not registered for synchronization because synchronization is not active 
[org.springframework.jdbc.datasource.DataSourceUtils] - Fetching JDBC Connection from DataSource 
[org.mybatis.spring.transaction.SpringManagedTransaction] - JDBC Connection [jdbc: mysql://localhost:3306/iot, UserName=root@localhost, MySQL Connector Java]* will not be managed by Spring*
[com.haoyifen.mySSMTemplate.dao.UserMapper.selectByPrimaryKey] - ==> Preparing: select ID, USER_ID, USER_NAME, SEX, ADDRESS, PHONE_NUMBER, MAIL_BOX from user where ID = ? 
[com.haoyifen.mySSMTemplate.dao.UserMapper.selectByPrimaryKey] - ==> Parameters: 1(Integer) 
[com.haoyifen.mySSMTemplate.dao.UserMapper.selectByPrimaryKey] - <== Total: 1 
[org.mybatis.spring.SqlSessionUtils] - Closing non transactional SqlSession[org.apache.ibatis.session.defaults.DefaultSqlSession@1a714e6e]

原因:重复扫描事务配置所致,spring-mybatis中扫描了一遍service

<context:component-scan base-package="cn.yzh" >

  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />

</context:component-scan>

spring-mvc中又扫描了一遍

<context:component-scan base-package="cn.yzh" >

spring如果要使事务生效,就需要cglib为userService生成代理子类,在spring.xml中已经生成了代理类,而在spring-mvc.xml中,又重新扫描了一遍,使得原先cglib生成的代理子类失效,从而事务拦截也失效。

解决:

于是在spring-mvc中改成<context:component-scan base-package="cn.yzh.controller" > 只让它扫描controller,而spring-mybatis不扫描controller就好了

参考:https://blog.csdn.net/haoyifen/article/details/51172647

猜你喜欢

转载自www.cnblogs.com/maidouerer/p/8919001.html