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;
}
}