`
sgl124764903
  • 浏览: 170579 次
  • 性别: 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  
  太棒了,我的问题解决了、、、

相关推荐

Global site tag (gtag.js) - Google Analytics