SpringBean之间的关系
1、SpringBean之间的继承
假设现有一个Address类表示地点:
1package com.xpu.bean;
2
3public class Address {
4 private String city;
5 private String street;
6 setter()/getter()....
7}
现在如何需要两个对象,则可以这写:
1<bean id="address1" class="com.xpu.bean.Address" p:city="Xian" p:street="Wulukou"></bean>
2
3<bean id="address2" class="com.xpu.bean.Address" p:city="Xian" p:street="Beidajie"></bean>
但是这样写如果在类属性过多的时候就不是很好用了,所以,出现了配置之间的继承关系,但是这个和类之间的继承不是一回事:
1<bean id="address1" class="com.xpu.bean.Address" p:city="Xian" p:street="Wulukou"></bean>
2
3<!-- 配置之间的继承关系 :使用bean的parent属性指定-->
4<bean id="address2" p:street="Beidajie" parent="address1"></bean>
Spring 允许继承 bean 的配置, 被继承的 bean 称为父 bean. 继承这个父 Bean 的 Bean 称为子 Bean,子 Bean 从父 Bean 中继承配置, 包括 Bean 的属性配置,子 Bean 也可以覆盖从父 Bean 继承过来的配置,父 Bean 可以作为配置模板, 也可以作为 Bean 实例。 若只想把父 Bean 作为模板, 可以设置 的abstract 属性为 true, 这样 Spring 将不会实例化这个 Bean:
1<-- 抽象bean不能被IOC容器实例化,只能用继承配置 -->
2<bean id="address1" class="com.xpu.bean.Address" abstract="true"></bean>
一旦这样配置之后这个配置是不能实例化出对象的,而需要配置出他的子配置,否则就无法创建对象,若某一个bean的class未指定,那么该bean必须是一个抽象bean,可以忽略父 Bean 的 class 属性,让子 Bean 指定自己的类,而共享相同的属性配置。但此时 abstract 必须设为 true,并不是 元素里的所有属性都会被继承. 比如: autowire, abstract