gpt4 book ai didi

spring - java.lang.IllegalArgumentException : 'sessionFactory' or 'hibernateTemplate' is required in spring+hibernate

转载 作者:行者123 更新时间:2023-12-02 05:05:51 24 4
gpt4 key购买 nike

我正在做 spring + hibernate 应用程序。当我在 tomcat 服务器上运行应用程序时,出现一些异常。下面是我的代码。

这是我的 bean 配置文件。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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-2.5.xsd">

<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>WEB-INF/database/db.properties</value>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>Employee.hbm.xml</value>
</list>
</property>
</bean>
<bean id="employeeBo" class="com.saggezza.employee.bo.impl.EmployeeBoImpl">
<property name="employeeDao" ref="employeeDao" />
</bean>

<bean id="employeeDao" class="com.saggezza.employee.dao.impl.EmployeeDaoImpl">
<constructor-arg ref="sessionFactory"></constructor-arg>
</bean>

这是我的 dao 类。

public class EmployeeDaoImpl extends HibernateDaoSupport implements EmployeeDao {

private SessionFactory sessionFactory;
public EmployeeDaoImpl(SessionFactory sessionfactory){
this.sessionFactory=sessionfactory;
}

@Override
public List<Employee> getEmployeeDetails() {
return getHibernateTemplate().find("from Employee");

}
}

这里另一个类employeeBo 正在调用employeeDaoImpl。当我运行这个时,我收到以下异常。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeBo' defined in ServletContext resource [/WEB-INF/spring/EmployeeBean.xml]: Cannot resolve reference to bean 'employeeDao' while setting bean property 'employeeDao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeDao' defined in ServletContext resource [/WEB-INF/spring/EmployeeBean.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required

谁能帮忙解决这个问题吗?我尝试了很多,也谷歌了它。但确实得到了解决方案。

最佳答案

如果您有两个配置文件,则需要重复“sessionFactory”定义。删除“sessionFactory”定义之一。在 IllegalArgumentException 之前,您可能会遇到重复的 bean 定义异常。

编辑:发表评论后,

public class EmployeeDaoImpl extends HibernateDaoSupport implements EmployeeDao {


public EmployeeDaoImpl(SessionFactory sessionfactory){
setSessionFactory(sessionfactory);
}

@Override
public List<Employee> getEmployeeDetails() {
return getHibernateTemplate().find("from Employee");

}
}

或者删除上面代码中的构造函数并使用setter注入(inject)注入(inject)“sessionFactory”。请参阅org.springframework.orm.hibernate3.support.HibernateDaoSupport.setSessionFactory(SessionFactory)。我更喜欢稍后的方法。

关于spring - java.lang.IllegalArgumentException : 'sessionFactory' or 'hibernateTemplate' is required in spring+hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com