spring管理事务控制的问题
2017-06-30 13:22
441 查看
在使用ssm框架开发项目时,事务控制交由spring来管理,然而在查看日志时发现一个问题:org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:168) - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@28595cf8],为什么是non tranctionnal sqlsession?这说明该sqlsession并未进行事务管理,查看springmvc.xml的配置文件,当时将service层与controller层的注解扫描同时配置在springmvc.xml中,而事务管理却配置在applicationContext.xml中,也就是事务控制配置到了spring容器中,众所周知spring容器与springmvc容器是父子容器,父容器不能访问子容器中的对象,就导致了这样的结果。我将service层的注解扫描配置在applicationContext.xml中后重启服务,再查看日志,org.mybatis.spring.SqlSessionUtils.closeSqlSession(SqlSessionUtils.java:163) - Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7be140d7],这样sqlsqlsession是由事务管理的。在声明事务的传播机制时,是针对业务层的方法进行配置的,也就是说业务层的方法以update、delete、add等等开头的方法才会被事务管理,如果不以这样的方式开头仍然想被事务管理,可以考虑加@Transaction(propagation=propagation.required)注解,当然需要在spring容器中配置<tx:annotation-driven/>,也就是事务管理的注解驱动才可以。
相关文章推荐
- Spring中事务管理与Hibernate自带事务管理冲突的一个问题
- Spring+hibernate的session问题 声明事务管理是否起作用
- spring + springmvc+ mybatis 事务管理及控制
- 开发问题一:spring的事务管理问题
- spring事务管理问题
- SSH整合,spring事务管理不回滚问题
- 【Spring 事务管理系列之二】抛开Spring我们手动实现事务控制
- spring 事务管理——回滚之service层(事务控制层)代码互调
- Spring注解配置事务管理——问题
- 关于spring3.0 后的 事务注解管理指定数据源问题
- 关于spring管理下的事务不起作用的问题。
- spring注解实现事务管理问题
- spring与hibernate集成的session事务控制问题解析
- spring 声明式事务管理在真实的Service和单元测试时的回滚情况,需要注意的问题,jpa为例子
- spring 事务管理下的 hibernate 持久化实例操作的几点问题【查询/更新】
- spring管理的hibernate事务不会自动flush的问题-今天真遇到这问题了
- spring2.5整合ibatis2.3事务管理时遇到的问题以及需要的jar包
- spring3+hibernate4配置事务管理以及session获取问题。
- 27Spring_的事务管理_银行转账业务加上事务控制_基于tx.aop进行声明式事务管理
- spring的事务管理问题