spring mybatis sqlSession WARN错误
2016-04-07 14:40
543 查看
spring mybatis sqlSession WARN错误
最近在做spring+mybatis集成的时候,发现写测试代码会出现以下WARN2016-04-07 14:17:46 [org.springframework.beans.factory.support.DisposableBeanAdapter]-[WARN] Invocation of destroy method 'close' failed on bean with name 'sqlSession': java.lang.UnsupportedOperationException: Manual close is not allowed over a Spring managed SqlSession
从错误上看应该是调用了sqlSession 的close方法,我们来看一下其实现类的SqlSessionTemplate 的实现方法
@Override public void close() { throw new UnsupportedOperationException("Manual close is not allowed over a Spring managed SqlSession"); }
可以看到其直接抛出异常了,因为这个sqlSession是spring管理的,故而不需要我们显示的调用其销毁方法。从代码上看,我们也没调用过close方法
那应该是test方法在执行完后,spring-test调用了beanFactory 的destory方法进行销毁单例,而从其销毁单例bean的看,其会调用我们指定的destory方法以及其实现
DisposableBean接口的destory方法,若没有则会查找实现于AutoCloseable接口的close方法,或实现与Closeable接口的close方法,
而 sqlSession的close方法就是实现于closeable接口。
解决方法
将 mybatis-spring.jar升级到1.2.4,sqlSessionTemplate会实现 DisposableBean接口相关文章推荐
- DefaultHandlerExceptionResolver : Failed to convert request element: org.springframework.web.method.
- JavaBean, EbtutyBean, POJO概念
- Java动态代理实现
- eclipse svn 插件安装
- DefaultHandlerExceptionResolver : Failed to convert request element: org.springframework.web.method.
- java JPA 介绍
- 【Bug解决日志】newUri.getPathSegments().get(1) 报错: java.lang.IndexOutOfBoundsException
- Java核心技术卷一 第11章 异常、断言和日志
- struts addFieldError()方法添加的数据怎么在页面显示
- foreach语句和传统的for循环语句区别
- Spring分布式事务实现
- Eclipse快捷键大全,导包快捷键:ctrl+Shift+/
- 超越线程池:Java并发并没有你想的那么糟糕
- 求数组中的最小子数组,时间复杂度o(n),java
- JDK源码分析:java.lang.Boolean
- [疯狂Java]SQL-DDL:索引、视图
- java Map集合类
- Java对象与Map的转换
- java中map集合的原理与应用
- JAVA正则表达式 Pattern和Matcher