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