以下是我尝试将Hibernate与Spring MVC项目集成并添加Autowired功能时遇到的异常。
例外:
SEVERE:将上下文初始化事件发送给侦听器的异常 类的实例 org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException:错误 创建名为'userBOImpl'的bean:注入自动装配 依赖性导致;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 autowire字段:private com.inspireme.dao.UserDA O. com.inspireme.boimpl.UserBOImpl.userDAO;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为'userDAOImpl'的bean:注入自动装配 依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationExcep tion:不能 autowire字段:private org.hibernate.SessionFactory com.inspireme.daoimpl.UserDAOImpl.sessionFactory;嵌套异常是 j ava.lang.NoClassDefFoundError:Lorg / hibernate / cache / CacheProvider;
分派器-servlet.xml中
<!-- Enable Annotation based configuration -->
<context:annotation-config />
<!-- Base package -->
<context:component-scan base-package="com.inspireme." />
<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>
<!-- Database properties configuration - START -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="WEB-INF/classes/properties/database.properties">
</bean>
<!-- Database properties configuration - END -->
<!-- Accessing DB with available credentials - START -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
p:password="${jdbc.password}">
</bean>
<!-- Accessing DB with available credentials - END -->
<!-- Hibernate Settings - START -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<!-- Hibernate Settings - END -->
<mvc:resources mapping="/resources/**" location="/resources/inspiremetheme/" />
<mvc:annotation-driven/>
<tx:annotation-driven />
<!-- Start of Autowired beans -->
<bean id="userBO" class="com.inspireme.boimpl.UserBOImpl"></bean>
<bean id="userDAO" class="com.inspireme.daoimpl.UserDAOImpl"></bean>
<!-- End of Autowired beans -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
hibernate.cfg.xml中
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping class="com.inspireme.dto.UserDTO"></mapping>
</session-factory>
</hibernate-configuration>
控制器类
package com.inspireme.controller;
@Controller
@RequestMapping("/")
public class InspireMeController {
public ApplicationContext applicationContext;
private static final Logger LOGGER = Logger.getLogger(InspireMeController.class);
@Autowired
private UserBO userBO;
服务类:
package com.inspireme.boimpl;
@Service
public class UserBOImpl implements UserBO {
private static final Logger LOGGER = Logger.getLogger(UserBOImpl.class);
@Autowired
private UserDAO userDAO;
存储库类
package com.inspireme.daoimpl;
@Repository
public class UserDAOImpl implements UserDAO {
@Autowired
private SessionFactory sessionFactory;
为什么我得到此异常,因为所有3个bean都在dispatcher-servlet.xml文件中定义。
我指的是以下source来集成Hibernate。
答案 0 :(得分:2)
java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider
jar丢失了。
你是部分正确..有一个罐子不匹配..如此处所述.. howtodoinjava.com/2013/12/08 / ...但是在添加之后我得到一个错误,“WEB-INF / inspireme-dispatcher-servlet.xml”:调用init方法失败;嵌套异常是java.io.FileNotFoundException:类路径esource [hibernate.cfg.xml]不能被解析为URL因为它不存在“。请查看我的文件夹结构,让我知道如何在这里给出路径。
不完全确定构建在您的情况下如何工作,但请尝试classpath:/hibernate/hibernate.cfg.xml
或classpath:hibernate/hibernate.cfg.xml
。或者更好地检查部署战争中该文件在WEB-INF/classes
内的确切位置。