通过SqlSessionTemplate基于模板类实现Mybatis
2017-08-18 14:52
537 查看
之前网上下了一个电商项目学习。
项目中遇到一个异常百思不得其解:贴上异常信息
一般来说这种异常大多是因为没有加上@Controller,@Service这样的注解造成的,但在这里不是。
经过研究发现是DealCategoryDAO的父类BaseMybatisDAO出了问题
![](https://img-blog.csdn.net/20170818144641915?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hlbmJpbjY4MzA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
结合异常信息中“Could not autowire field: private org.mybatis.spring.SqlSessionTemplate”这句话可以看出把问题定位到BaseMybatisDAO中的SqlSessionTemplate
![](https://img-blog.csdn.net/20170818144905832?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hlbmJpbjY4MzA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
解决方法就是在配置文件中加入红框部分配置。
项目中遇到一个异常百思不得其解:贴上异常信息
八月 18, 2017 2:37:27 下午 org.apache.catalina.core.StandardContext listenerStart 严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dealCategoryDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.mybatis.spring.SqlSessionTemplate com.common.orm.mapper.BaseMybatisDAO.template; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.mybatis.spring.SqlSessionTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:700) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5118) at org.apache.catalina.core.StandardContext.startInternal( 4000 StandardContext.java:5634) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.mybatis.spring.SqlSessionTemplate com.common.orm.mapper.BaseMybatisDAO.template; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.mybatis.spring.SqlSessionTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:508) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) ... 22 more Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.mybatis.spring.SqlSessionTemplate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1100) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:855) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480) ... 24 more
一般来说这种异常大多是因为没有加上@Controller,@Service这样的注解造成的,但在这里不是。
经过研究发现是DealCategoryDAO的父类BaseMybatisDAO出了问题
结合异常信息中“Could not autowire field: private org.mybatis.spring.SqlSessionTemplate”这句话可以看出把问题定位到BaseMybatisDAO中的SqlSessionTemplate
解决方法就是在配置文件中加入红框部分配置。
相关文章推荐
- Mybatis(基于SqlSessionTemplate的实现) + Spring 练习实战
- Mybatis(基于SqlSessionTemplate的实现) + Spring 练习实战
- 通过 sqlSessionTemplate 整合 Spring 和 MyBatis 的方法
- springMVC+mybatis 之 借助SqlSessionTemplate 实现Dao层通用写法
- MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(一)
- Mybatis SqlSessionTemplate 源码解析
- SqlSessionTemplate是如何保证MyBatis中SqlSession的线程安全的
- Mybatis SqlSessionTemplate优点
- Mybatis的SqlSessionTemplate的浅析
- Mybatis SqlSessionTemplate 源码解析
- 基于tomcat 7.0.68 的websocket 实现,及通过 HttpSessionId 实现websocket session 共享
- mybatis中 SqlSessionTemplate的理解
- SpringMVC+MyBatis,连接池采用druid,启动报错Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
- Spring和Mybatis整合过程中遇到的一个找不到sqlSessionFactory或sqlSessionTemplate的异常
- Mybatis 通过SqlSessionManager SqlSessionFactory 构建线程安全的
- MyBatis-Spring的sqlSessionTemplate
- mybatis开发dao实现类之SqlSession、SqlSessionFactory、SqlSessionFactoryBuilder的生命周期
- Mybatis SqlSessionTemplate 源码解析
- Mybatis-Spring SqlSessionTemplate 源码解析
- MyBatis + Spring 基于SqlSessionDaoSupport的泛型基类