`

疑问:spring + hibernate 自定义BaseDao的注入问题

阅读更多

自定义了一个BaseDao来执行基本的crud

public abstract  class GenericHibernateDaoSupport<T, ID extends Serializable, DAOImpl extends IGenericDAO<T, ID>>
		extends HibernateDaoSupport implements IGenericDAO<T, ID> {

	private Class<T> persistentClass;
	
	public void setSessionFactory2(SessionFactory sessionFactory){
		super.setSessionFactory(sessionFactory);
	}
//...省略	
}

 在spring配置文件中配置改dao,但是其他的dao实现采用注解形式注入

 

<bean abstract="true"  class="stone.dao.sh.GenericHibernateDaoSupport">
	<property name="sessionFactory2" ref="sessionFactory"></property>
	</bean>
	<context:component-scan base-package="stone.service,stone.dao.sh" />

 

单元测试时候不通过sessionFactory拿不到

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sortService': Injection of resource methods failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sortDao' defined in file [E:\aguu_eclipse\workspace\STONE\web\WEB-INF\classes\stone\dao\sh\SortDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:305)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:998)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
	at org.springframework.test.AbstractSingleSpringContextTests.createApplicationContext(AbstractSingleSpringContextTests.java:213)
	at org.springframework.test.AbstractSingleSpringContextTests.loadContextLocations(AbstractSingleSpringContextTests.java:189)
	at org.springframework.test.AbstractSingleSpringContextTests.loadContext(AbstractSingleSpringContextTests.java:169)
	at org.springframework.test.AbstractSpringContextTests.getContext(AbstractSpringContextTests.java:140)
	at org.springframework.test.AbstractSingleSpringContextTests.setUp(AbstractSingleSpringContextTests.java:98)
	at junit.framework.TestCase.runBare(TestCase.java:128)
	at org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:76)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:120)
	at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sortDao' defined in file [E:\aguu_eclipse\workspace\STONE\web\WEB-INF\classes\stone\dao\sh\SortDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:168)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:435)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:409)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:537)
	at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:192)
	at org.springframework.beans.factory.annotation.InjectionMetadata.injectMethods(InjectionMetadata.java:117)
	at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:302)
	... 30 more
Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
	at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:117)
	at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
	... 45 more

 

后来改策略全用注解形式,pass,不解??

分享到:
评论

相关推荐

    Struts+Spring+Hibernate开发实例.pdf

    Struts负责视图与控制器部分,Spring负责业务逻辑层及依赖注入,Hibernate负责数据持久层。下面将详细介绍文档提及的各个知识点。 **Struts框架** Struts是基于MVC设计模式的一个Web层框架。它将Web层分为Model...

    Struts+Spring+Hibernate开发实例 (SSH整合)

    Struts、Spring、Hibernate(SSH)是Java Web开发中三个非常重要的开源框架,它们分别用于MVC模式的实现、依赖注入和持久化管理。SSH整合是将这三个框架结合在一起,以构建更高效、可维护性更强的企业级应用。本文...

    struts+spring+hibernate

    Struts、Spring、Hibernate(SSH)是Java Web开发中三个非常重要的开源框架,它们的集成使用可以构建出高效、稳定且可维护的大型应用程序。这三个框架分别承担着不同的职责: 1. Struts:作为MVC(Model-View-...

    Struts+Spring+Hibernate之选课系统

    Struts、Spring、Hibernate 是三个著名的Java开源框架,它们在Web应用开发中有着广泛的应用。Struts 是MVC(Model-View-Controller)框架的一部分,主要用于处理用户界面和业务逻辑的交互;Spring 提供了一个全面的...

    Struts+spring+hibernate开发实例

    尽管Spring对Hibernate做了大量封装,简化了数据库操作,但在某些特定情况下,如需要执行自定义SQL查询、处理分页等,仍然需要手动操作。因此,定义了一个IBase接口和BaseDao实现,模仿HibernateTemplate的功能,...

    Struts+Hibernate+Spring整合应用

    这个案例展示了Struts+Hibernate+Spring整合应用在实际问题中的应用,同时也要求开发者具备这三个框架的基本知识,才能有效地进行开发。 总结来说,Struts+Hibernate+Spring整合提供了强大且灵活的Web应用程序开发...

    framework开发手册.doc

    Spring 提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring 的架构基础是基于使用 JavaBean 属性的 Inversion of Control 容器。 三、Hibernate 简介 Hibernate 是一个开放源...

    SSH集成例子(积分管理,Spring2.5,Struts2,Hibernate3.3)

    SSH集成是Java开发中一种常见的技术栈组合,包括Spring、Struts和Hibernate,它们分别负责应用的依赖注入、MVC框架和对象关系映射。在这个例子中,SSH被用来构建一个积分管理系统,其中Spring2.5、Struts2和...

    基于Annotation并对DAO层封装具有分页功能的S2SH整合实例

    在Java Web开发中,S2SH(Struts2 + Spring + Hibernate)是一个常见的技术栈,它结合了MVC框架Struts2、依赖注入容器Spring以及持久层框架Hibernate,以实现高效且灵活的Web应用开发。在这个基于Annotation并对DAO...

    Hibernate封装dao层

    在Java开发中,DAO(Data Access Object... - 使用Spring等框架集成Hibernate,以简化事务管理和依赖注入。 通过以上步骤,我们可以构建一个高效且易于维护的Hibernate DAO层,为Java应用程序提供稳定的数据访问支持。

    SSH整合文档(带实例)

    Spring与Hibernate的无缝集成允许开发者几乎无需直接操作Hibernate API,而是通过Spring提供的HibernateTemplate或自定义的BaseDao接口来执行数据库操作。在本例中,为了应对特定场景下的需求,如查询、分页等,...

    简单的SSH集成

    2. **Spring 3.0**:作为核心的容器和依赖注入框架,Spring 3.0管理了项目中的对象生命周期和依赖关系。在这个项目中,Spring不仅负责了Bean的创建和管理,还承担了事务管理的角色。由于描述中提到没有使用注解,...

    国税服务系统分析与制作(role为例)1

    在Spring框架中,我们需要在服务实现类上添加`@Service`注解,如`@Service("roleService")`,以便于Spring容器通过注解注入来管理。同时,使用`@Resource`注解注入DAO,使Spring能够自动装配。 接下来,创建Action...

Global site tag (gtag.js) - Google Analytics