在SSH搭建工程时使用全注解方式
在运行时出现问题
sessionFactory or hibernateTemplate is required
查看HibernateDaoSupport的源代码得知:setSessionFactory方法是:
public final void setSessionFactory(SessionFactory sessionFactory) {
if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) {
this.hibernateTemplate = createHibernateTemplate(sessionFactory);
}
}
说明此处是没有识别到sessionFactory的,目前我找到有两种解决办法:
方法一:
在继承HibernateDaoSupport方法的类中需要写入一个方法,方法如下:
@Resource(name = "sessionFactory")
private void setHibernateSessionFactory(SessionFactory sessionFactory) {
// 这个方法名可以随便写,@Resource可以通过name 或者type来装载的。
super.setSessionFactory(sessionFactory);
}
加入这个方法之后,系统就可以装载到sessionFactory了
方法二:
在spring的配置文件中添加入一句话default-autowire="byName"
配置文件applicationContext.xml中添加,具体地方如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" default-autowire="byName">
以上两种方法都可以解决出现的问题,如果发现其他方法,我会实时的更新上去的