最近在复习Java Web相关知识时进行SpringMVC+Spring+Hibernate(基于annotation)的项目搭建,遇到HibernateTemplate无法实例化的问题,其它的像Controller及Service层类可以正常实例化,由此可见非配置文件没有加载的问题,但总是提示如下错误:
No qualifying bean of type [org.springframework.orm.hibernate4.HibernateTemplate] 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)}。可能会影响类实例化的<context:annotation-config />
<context:component-scan base-package="com.motrsky" />配置都已经正确添加。开始以为是SessionFactory及BasicDataSource连接池没有正确实例化导致该问题,于是开始用在applicationContext.xml中写代码手动实例化(非annotation),clean,重新启动tomcat依旧如此报错。接下来是各种百度、google以及stackoverflow,没有发现类似问题:有没有加扫描配置的,有没有在dao层中添加@Repository注解的等等,这些我已悉数添加。最后用了最笨的排除法,从web.xml开始逐段注释代码,重启,最后发现是它们影响了整个工程正常启动并抛出错误:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
注释掉该段代码,满天乌云散了……
没有明白为什么会如此,有该段代码,只是不能正常实例化HibernateTemplate,其它的都可以。~_~
仅此记录该错误,希望能帮到遇到类似问题的小伙伴。