sessionFactory or hibernateTemplate is required

## 问题原因 Spring整合Hibernate后通常我们都会让dao继承继承一个类:org.springframework.orm.hibernate3.support.HibernateDaoSupport spring在初始化容器的时候会对这个对象作一个check 看下HibernateDaoSupport源码中的checkDaoConfig()方法就清楚啦: ``` protected final void checkDaoConfig(){ if (this.hibernateTemplate == null){ throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required"); } } ``` 所以,继承了HibernateDaoSupport的对象一定要注入一个sessionFactory or hibernateTemplate对象。 ## 解决方案 在baseDao或者Dao中增加这段代码 ```java @Autowired public void setSessionFactoryOverride(SessionFactory sessionFactory){ super.setSessionFactory(sessionFactory); } ``` 或者 ```java @Autowired public void setTemplate(HibernateTemplate hibernateTemplate){ setHibernateTemplate(hibernateTemplate); } ``` 以上两种方案必须保证spring中已经有sessionFactory与hibernateTemplate。