在applicationContext.xml中配置如下:<!-- 第一种配置 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="userRegisterDAO" class="com.dao.impl.UserRegisterDAOImpl">
         <property name="hibernateTemplate" ref="hibernateTemplate"/>
</bean><!-- 第二种配置 -->
<bean id="userRegisterDAO" class="com.dao.impl.UserRegisterDAOImpl">
         <property name="sessionFactory" ref="sessionFactory"/>
</bean>
请问上面的两种配置有什么区别没有?
Spring的配置太多了,都搞晕了

解决方案 »

  1.   

    userRegisterDAO
    这个里面到底是 sessionFactory 还是 hibernateTemplate 属性?
      

  2.   

    com.dao.impl.UserRegisterDAOImpl类中有HibernateTemplate类的实例作为属性需要像第一种那样注入hibernateTemplate,若类中没有,而是直接继承的HibernateDaoSupport类则用第二种配置。
      

  3.   


    楼主的第二种配置我用过 第一种没用过 不过我个人认为 2种配置原理都是一样的
    第一种配置中是将hibernate与spring继承的辅助类org.springframework.orm.hibernate3.HibernateTemplate 放到spring容器中进行实例化,然后再注入给UserRegisterDAOImpl类
    那么在你的应用中就可以用HibernateTemplate 类进行持久化相关的操作第二种配置是在你这个类UserRegisterDAOImpl 继承了HibernateDaoSupport之后 可以这么配置原理就是你继承了HibernateDaoSupport之后,可以注入SessionFactory 之后再应用中就可以使用
    this.getHibernateTemplate()方法拿到模板 具体内容LZ 可以看一下HibernateDaoSupport 分析一下就会明白了.表达能力有限 说的不是很好 见谅!
      

  4.   

    谢谢各位的回复。
    UserRegisterDAOImpl 里只是继承了HibernateTemplate
      

  5.   

    两种配置各有好处,但是同出一辙!
    第一种配置:注入 HibernateTemplate 可以直接访问注入对象操作句柄!
    第二种配置:Dao继承HibernateDaoSupport,同样可以获取操作句柄!想明白其中的不同,可以直接查看源代码!楼上 yuhonggood 正解,详细的你可以自己领悟一下!