Spring 中的继承只是属性继承,定义为Abstract="true"的bean不会进行是实例化。
实例分析:
例1:
<bean id="absDao" abstract="true" class="com.baidu.sns.base.dao.SnsbaseDao" > <property name="hibernateTemplate" ref="hibernateTemplate" /> </bean> <bean id="userBlackDao" parent="absDao" class="com.baidu.sns.blacklist.dao.UserBlackDao"> </bean>
在子类bean中 userBlackDao中,只是引用了父类Bean的 hibernateTemplate属性,这时父类bean: absDao可以用不用定义class属性的。
例2:
<bean id="absDao" abstract="true" class="com.baidu.sns.base.dao.SnsbaseDao" > <property name="hibernateTemplate" ref="hibernateTemplate" /> </bean> <bean id="userBlackDao" parent="absDao"> </bean>
子类Bean: userBlackDao没有定义class属性,需要用父类bean中定义的class=“ com.baidu.sns.base.dao.SnsbaseDao”类进行实例化,所以此属性必须配置正确,此时可以在子类bean中覆盖父类bean的某些属性,实现自己的功能。
因此spring中的继承更像是Template模式。