我现在有一个类 
public  class GenericDaoHibernateImpl<T, PK extends Serializable> extends HibernateDaoSupport implements GenericDao<T, PK> {但是我配置文件 没有xml配置  GenericDaoHibernateImpl,给他注入 HibernateTemplate ,也没有注入 sessionfctory------------然后GenericDaoHibernateImpl这个类里面也没有 注解 setSuperHibernateTemplate  或者 setSupersessionfctory 之类---------------但是 我就疑惑了 ,他还能 用 getHibernateTemplate里面的模板方法
请教高人 HibernateTemplate是如何注入的 ps:HibernateDaoSupport 是抽象的,里面的两个set是final的 我知道-------------------------------------------------------------GenericDaoHibernateImpl 有这个方法 private Class<T> type;//实体类类型,(由构造方法自动赋值)
public GenericDaoHibernateImpl(Class<T> type) {
this.type = type;
}
---public class TSysPostDaoHibernateImpl extends
GenericDaoHibernateImpl<TSysPost, Long> implements ITSysPostDao {
public TSysPostDaoHibernateImpl(Class<TSysPost> post) {
super(post);
}
}TSysPostDaoHibernateImpl 是子类

解决方案 »

  1.   

    HibernateDaoSupport 该类中有getHibernateTemplate方法来返回 HibernateTemplate
      

  2.   

    继承了 HibernateDaoSupport  ,在这个父类里已经注入了 你看下源码
      

  3.   

    当你继承了hibernatedaosupport类后,对于子类可以直接用到父类的excute(CURD)方法,这样就会减轻很多程序员的工作。
      

  4.   

    我看清楚你的意思了,如果你没有注入sessionFactory的话是会报错的/*注入属性sessionFactory,这个属性在HibernateDaoSupport类中*/
    @Autowired
    public void setSuperSessionFactory(SessionFactory sessionFactory) {
    super.setSessionFactory(sessionFactory);
    }这个没有的话会报以下的错
    Error creating bean with name 'usersDao' defined in file [C:\Users\user\Workspaces\MyEclipse 8.5 M2\sshTest\WebRoot\WEB-INF\classes\com\bbx\dao\impl\UsersDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
      

  5.   

    这个类注入HibernateTemplate 和sessionFactory都行