Spring中可以将bean的公共属性提出来共用,就像java中的继承一样。主要用到abstract和parent两个关键字。
<bean id="beanAbstract" abstract="true"> <property name="id" value="1000"/> <property name="name" value="Jack"/> </bean> <bean id="bean3" class="com.bjsxt.spring.Bean3" parent="beanAbstract"> <property name="name" value="Tom"/> <property name="password" value="123"/> </bean> <bean id="bean4" class="com.bjsxt.spring.Bean4" parent="beanAbstract"/>
abstract不是必须的,因为beanAbstract没有设置class属性,所以其不可实例化,就设置abstract防止其实例化。设置了class后就不用设置abstract了,因为设置了class就可以被实例化了。如下面。
<bean id="beanAbstract" class="com.bjsxt.spring.Bean4"> <property name="id" value="1000"/> <property name="name" value="Jack"/> </bean>
bean会继承parent指定的父bean中的属性,同名的会覆盖父bean中的属性。
下面是相关bean类:
public class Bean2 {
	private Bean3 bean3;
	private Bean4 bean4;
	private Bean5 bean5;
	public Bean3 getBean3() {
		return bean3;
	}
	public void setBean3(Bean3 bean3) {
		this.bean3 = bean3;
	}
	public Bean4 getBean4() {
		return bean4;
	}
	public void setBean4(Bean4 bean4) {
		this.bean4 = bean4;
	}
	public Bean5 getBean5() {
		return bean5;
	}
	public void setBean5(Bean5 bean5) {
		this.bean5 = bean5;
	}
}
public class Bean3 {
	private int id;
	private String name;
	private String password;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}
public class Bean4 {
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}
public class Bean5 {
	private int age;
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}