2014-03-24 48 views
0

我收到以下错误注入自动装配依赖项失败;嵌套的例外是org.springframework.beans.factory.BeanCreationException如下:SessionFactory

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'roleDAOImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.quad.dao.RoleDAOImpl.sessionFactory; nested exception is java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider; 

我在MVC-调度-servlet.xml中SessionFactory的配置是

<bean id="sessionFactory class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource" ref="dataSource" /> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> </props> </property> </bean> 

我使用SessionFactory的在RoleDAOImpl

我全MVC-调度-servlet.xml中是

<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<context:component-scan base-package="com.quad.controller" /> 
<context:component-scan base-package="com.quad.dao" /> 
<context:component-scan base-package="com.quad.entity" /> 
<context:component-scan base-package="com.quad.service" /> 

<context:property-placeholder location="classpath:database.properties" /> 
<!-- <context:property-placeholder location="classpath:spring-security.xml" /> --> 

<bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/WEB-INF/jsp/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="${database.driver}" /> 
     <property name="url" value="${database.url}" /> 
     <property name="username" value="${database.user}" /> 
     <property name="password" value="${database.password}" /> 
</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="hibernateProperties"> 
     <props> 
     <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
     <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
     <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>  
     </props> 
     </property> 
</bean> 

请大家帮忙。

+0

你有没有其他的Spring配置文件? – geoand

+0

@geoand spring security资源文件夹 – Ali786

+0

也许RoleDAOImpl类没有用@Repository注解 – 2014-03-24 14:23:46

回答

1

这绝对是一个不匹配的依赖版本的问题。 org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean

实现org.hibernate.cache.CacheProvider在休眠图4(a不同的高速缓存标准被创建)

指定您的会话工厂类是除去

这是特定于休眠3.

这意味着你使用hibernate 4相关的依赖与错误的会话工厂类。

只要您使用Spring 3.1.0.RELEASE或更高版本,hibernate 4类可以在spring-orm中使用(与hibernate3版本一样)。

你有那么两个选项:

  1. 变回休眠3
    • 这取决于你的项目是如何构建的。
    • 如果它使用Maven,这将涉及到更改休眠核心依赖
  2. 更改Spring配置Hibernate的4
    • 这将仅适用于春季3.1.0.RELEASE工作或更高
    • 这一变化的上述AnnotationSessionFactoryBean到:
      org.springframework.orm.hibernate4.LocalSessionFactoryBean
0

每当你注入SessionFactory的,你必须提供setter和getter方法。它会解决你的问题

相关问题