当我们在spring整合hibernate时候需要注入一个SessionFactory又因为每个dao都必须要注入这个对象所以我把提出一个dao父类出来在里面使用spring注解的方法注入一个SessionFactory对象,这个整个项目就只需要写一个注入
public abstract class BaseDaoImpl<E extends Serializable, PK extends Serializable>
extends HibernateDaoSupport implements BaseDao<E, PK> { /**
* 实体类的类型
*/
private Class<?> entityClass; /**
*
* @return 泛型的类型
*/
public Class<?> getEntityClass() {
return entityClass;
} private SessionFactory localSessionFactory; /**
*
* @param factory
*/
@Resource(name = "sessionFactory")
public void setLocalSessionFactory(Object sessionFactory) {
try {
System.out.println("--------------"+sessionFactory.getClass());
/*
* this.localSessionFactory = sessionFactory;
* System.out.println(localSessionFactory);
* setSessionFactory(localSessionFactory); */
System.out.println("success..........................");
} catch (Exception e) {
e.printStackTrace();
}
}
}
这个类继承了HibernateDaoSupport我写了一个LocalSessionFactory方法使用@Resource(name="sessionFactory")
这个注入sessionFactory但是出现了bugCaused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dicitonaryDao' defined in file [G:\erp\erp\web\WEB-INF\system\spring-system.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required原来我把LocalSessionFactory的类型定义为LocalSessionFactoryBean
然后使用getObject()方法强转在调用HibernateDaoSupport的setSessionFactory方法注入SessionFactory,不行
请高手指教
public abstract class BaseDaoImpl<E extends Serializable, PK extends Serializable>
extends HibernateDaoSupport implements BaseDao<E, PK> { /**
* 实体类的类型
*/
private Class<?> entityClass; /**
*
* @return 泛型的类型
*/
public Class<?> getEntityClass() {
return entityClass;
} private SessionFactory localSessionFactory; /**
*
* @param factory
*/
@Resource(name = "sessionFactory")
public void setLocalSessionFactory(Object sessionFactory) {
try {
System.out.println("--------------"+sessionFactory.getClass());
/*
* this.localSessionFactory = sessionFactory;
* System.out.println(localSessionFactory);
* setSessionFactory(localSessionFactory); */
System.out.println("success..........................");
} catch (Exception e) {
e.printStackTrace();
}
}
}
这个类继承了HibernateDaoSupport我写了一个LocalSessionFactory方法使用@Resource(name="sessionFactory")
这个注入sessionFactory但是出现了bugCaused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dicitonaryDao' defined in file [G:\erp\erp\web\WEB-INF\system\spring-system.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required原来我把LocalSessionFactory的类型定义为LocalSessionFactoryBean
然后使用getObject()方法强转在调用HibernateDaoSupport的setSessionFactory方法注入SessionFactory,不行
请高手指教
是否注入sessionFactory
或者是否设置了parent
在dao中'dicitonaryDao' 这个对象的注入方法,你检查一下,。
建议你最好别继承HibernateDaoSupport,如果继承了的话,有一套专门的配置, 不用你自己去实现的
创建失败。