`
sgl124764903
  • 浏览: 175734 次
  • 性别: Icon_minigender_1
  • 来自: 邯郸
社区版块
存档分类
最新评论

sessionFactory or hibernateTemplate is required

    博客分类:
  • SSH2
阅读更多

我把Spring和Hibernate整合起来时,遇到个错误搞了好久,按照网上的方法也没法解决

抛出错误如下:

严重: 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 'userService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
 at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:115)
 at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1203)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
 at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:291)
 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
 at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
 at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:189)
 at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4336)
 at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1105)
 at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1203)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:293)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
 at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1307)
 at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1571)
 at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1580)
 at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1560)
 at java.lang.Thread.run(Thread.java:619)
2009-11-29 15:48:00 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2009-11-29 15:48:00 org.apache.catalina.core.StandardContext start
严重: Context [/bookstore1.0.1] startup failed due to previous errors
2009-11-29 15:48:00 org.apache.catalina.core.ApplicationContext log

 

 

	<bean id="userDAO" class="org.bookstore.dao.impl.UserDAO">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<bean id="userService" class="org.bookstore.service.impl.UserService">
		<property name="userDAO">
			<ref bean="userDAO"/>
		</property>
	</bean>

 

 

public class UserDAO extends HibernateDaoSupport implements IUserDAO {
	
	public void saveUser(User user) {

		......
	}

}

 修改后如下:

<bean id="userDAO" class="org.bookstore.dao.impl.UserDAO">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	<bean id="userService" class="org.bookstore.service.impl.UserService">
		<property name="userDAO">
			<ref bean="userDAO"/>
		</property>
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>

 原因:

我的org.bookstore.dao.impl.UserDAO继承了org.springframework.orm.hibernate3.support.HibernateDaoSupport, spring在初始化容器的时候会对这个对象作一个check, 看下HibernateDaoSupport源码中的checkDaoConfig()方法就清楚啦:

Java代码 复制代码
  1. protected final void checkDaoConfig() {      
  2.         if (this.hibernateTemplate == null) {      
  3.             throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required");      
  4.         }      
  5.     }    
protected final void checkDaoConfig() {   
        if (this.hibernateTemplate == null) {   
            throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required");   
        }   
    }  

 
所以,在com.lfw.sh.manager.impl.UserManageImpl对象一定要注入一个sessionFactory or hibernateTemplate对象。

 

<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>org/bookstore/model/User.hbm.xml</value>
				....
			</list>
		</property>
	</bean>

 

 

分享到:
评论
1 楼 pcxbest 2011-08-04  
  太棒了,我的问题解决了、、、

相关推荐

    一个模拟Spring将SessionFactory注入到HibernateTemplate的小例子

    本示例将深入探讨如何使用Spring将SessionFactory注入到HibernateTemplate中,从而实现数据库操作的便捷管理。 首先,让我们了解几个关键组件: 1. SessionFactory:这是Hibernate的核心工厂类,用于创建Session...

    HibernateTemplate的方法使用

    - 在这种方式下,我们直接使用 DataSource 来创建 SessionFactory,并从 SessionFactory 创建 HibernateTemplate。 3. **直接获取并使用**: - 这种方式较为简单,直接通过现有的 SessionFactory 获取 ...

    HibernateTemplate 的常规用法.doc

    hibernateTemplate = new HibernateTemplate(sessionFactory); } return hibernateTemplate; } public List&lt;Person&gt; getPersons() { return getHibernateTemplate().find("from Person"); } public Person...

    hibernateTemplate

    hibernateTemplate = new HibernateTemplate(sessionFactory); } return hibernateTemplate; } // 查询所有Person实例 public List&lt;Person&gt; getPersons() { return getHibernateTemplate().find("from ...

    HibernateTemplate的用法总结

    hibernateTemplate = new HibernateTemplate(sessionFactory); } return hibernateTemplate; } // 查询所有Person public List&lt;Person&gt; getPersons() { // 使用HibernateTemplate查询所有Person return ...

    HibernateTemplate详细描述以及使用范围

    HibernateTemplate hibernateTemplate = new HibernateTemplate(sessionFactory, true); ``` #### 四、SessionFactory的作用 `SessionFactory`是Hibernate的核心工厂类,负责创建`Session`对象,同时也是线程...

    HibernateTemplate源代码

    throw new InvalidDataAccessApiUsageException("SessionFactory required for HibernateTemplate"); } // 获取当前会话 Session session = sessionFactory.getCurrentSession(); // 设置会话配置 ...

    关于使用HibernateTemplate

    &lt;property name="sessionFactory" ref="sessionFactory"/&gt; ``` - **使用**:在需要进行事务管理的方法上添加`@Transactional`注解即可,例如: ```java @Service @Transactional public class ...

    Spring_Spring_Hibernate_HibernateTemplate

    - 创建HibernateTemplate实例:使用SessionFactory创建HibernateTemplate,通常通过`setSessionFactory()`方法注入SessionFactory。 - 编写业务逻辑:调用HibernateTemplate提供的方法,如`save()`, `update()`, `...

    SSH2增删改查使用HibernateTemplate

    DataSource用于连接数据库,SessionFactory是Hibernate的核心接口,而HibernateTemplate则是Spring对SessionFactory的封装,提供了一种模板方法模式来执行常见的Hibernate操作。 ```xml &lt;!-- 数据库连接配置 --&gt; ...

    使用 HibernateSessionFactory 类

    在Java的持久化框架Hibernate中,`SessionFactory`是核心组件之一,它负责管理数据库会话并提供对象-关系映射(ORM)的功能。本篇文章将深入探讨`SessionFactory`的使用,以及如何创建和操作它。 `SessionFactory`...

    HibernateSessionFactory.java

    HibernateSessionFactory.java

    HibernateSessionFactory 代码

    本篇文章将深入探讨`HibernateSessionFactory`及其在Hibernate中的作用,以及如何使用它来实现增、删、查、改(CRUD)操作。 `SessionFactory`是Hibernate的核心组件,它是线程安全的,负责管理数据库连接和会话。`...

    hibernate_jar.rar

    在Spring中整合Hibernate,主要通过Spring的DataSource、SessionFactory和HibernateTemplate或HibernateDaoSupport来实现。Spring能够管理SessionFactory的生命周期,提供事务处理,并通过AOP实现事务的声明式管理...

    hibernateDaoSurpport和hibernateTemplate

    通过这种方式,开发者可以在继承`HibernateDaoSupport`的DAO实现类中直接调用`HibernateTemplate`的方法,而无需显式创建`SessionFactory`和`HibernateTemplate`。 #### 四、比较分析 - **使用场景**:`...

    HibernateTemplate类的使用

    ### HibernateTemplate类的使用详解 #### 一、引言 在Java开发中,持久层框架Hibernate因其优秀的ORM(Object-Relational Mapping)特性被广泛应用。为了更便捷地使用Hibernate,Spring框架提供了一系列工具类来简化...

    hibernate中的SessionFactory

    hibernate中的SessionFactoryhibernate中的SessionFactoryhibernate中的SessionFactory

    基于HIbernateTemplate的代码自动生成

    它是Spring对Hibernate提供的一个抽象层,它提供了一组模板方法,使得开发者可以更方便地进行持久化操作,如保存、更新、删除和查询等,而无需直接与`Session`或`SessionFactory`打交道。`HibernateTemplate`内部...

    hibernate模拟hibernatetemplate

    在Spring 3.x版本之后,HibernateTemplate被HibernateOperations接口和SessionFactory取代,但在之前的版本中,它是非常流行的一种选择。 **一、HibernateTemplate介绍** HibernateTemplate是Spring对Hibernate的一...

    Spring整合hibernate(2)之基于HibernateTemplate的整合

    HibernateTemplate是Spring为Hibernate提供的一个便捷工具类,它包装了SessionFactory和Session的基本操作,如查询、保存、更新和删除等。在项目中,我们首先需要添加Spring和Hibernate的相关jar包,包括spring-tx、...

Global site tag (gtag.js) - Google Analytics