在spring 的HibernateDaoSupport中,setSessionFactory是使用final 修飾的,無法重寫,沒有辦法使用註解的方式注入sessionFactroy。代碼如下:
/**
* Set the Hibernate SessionFactory to be used by this DAO.
* Will automatically create a HibernateTemplate for the given SessionFactory.
* @see #createHibernateTemplate
* @see #setHibernateTemplate
*/
public final void setSessionFactory(SessionFactory sessionFactory) {
if (this.hibernateTemplate == null || sessionFactory != this.hibernateTemplate.getSessionFactory()) {
this.hibernateTemplate = createHibernateTemplate(sessionFactory);
}
}
我们可以变通一下,自己定义一个方法,这个方法去调用hibernateDaoSupport 中的setSessionFacotry方法,达到注入sessionFactory 的目的。
因此我定义如下的类:
我们可以变通一下,自己定义一个方法,这个方法去调用hibernateDaoSupport 中的setSessionFacotry方法,达到注入sessionFactory 的目的。
因此我定义如下的类:因此我定义如下的类:
public class SystemHibernateSupport extends HibernateDaoSupport {
@Resource(name = "sessionFactory")
public void setSuperSessionFactory(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
}
,所有的Dao 继承自定义的SystemHibernateSupport。
该问题迎刃而解。