使用模板裝配
如果需要裝配大量的同一類型的Bean,而這些Bean都有一些相同的屬性,可以使用模板來裝配Bean.
package example.chapter3;
import java.io.Serializable;
public class Employee implements Serializable {
private String name;
private String title;
private String company;
private String department;
private String title;
private String company;
private String department;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public void setName(String name) { this.name = name; }
public String getTitle() { return title; }
public void setTitle(String title) { this.title = title; }
public void setTitle(String title) { this.title = title; }
public String getCompany() { return company; }
public void setCompany(String company) { this.company = company; }
public void setCompany(String company) { this.company = company; }
public String getDepartment() { return department; }
public void setDepartment(String department) { this.department = department; }
public void setDepartment(String department) { this.department = department; }
}


xml配置文件
<bean id="abstractEmployee" class="java.io.Serializable" abstract="true">
<property name="company" value="Inc." />
<property name="department" value="Center" />
</bean>
<property name="company" value="Inc." />
<property name="department" value="Center" />
</bean>
<bean id="engineer1" class="example.chapter3.Employee" parent="abstractEmployee">
<property name="name" value="Bill" />
<property name="title" value="Software Engineer" />
</bean>
<property name="name" value="Bill" />
<property name="title" value="Software Engineer" />
</bean>
<bean id="engineer2" class="example.chapter3.Employee" parent="abstractEmployee">
<property name="name" value="Steven" />
<property name="title" value="Hardware Engineer" />
</bean>
<property name="name" value="Steven" />
<property name="title" value="Hardware Engineer" />
</bean>
<bean id="manager" class="example.chapter3.Employee" parent="abstractEmployee">
<property name="name" value="Michael" />
<property name="title" value="Manager" />
<property name="department" value="HR" />
</bean>

<property name="name" value="Michael" />
<property name="title" value="Manager" />
<property name="department" value="HR" />
</bean>

1.指定abstract="true"表示這個Bean只作為模板使用,Spring容器不會對標記為abstract的Bean創建實例,也不會檢查其屬性是否合法.因此可以隨意注入任何屬性
2.下面創建的engineer1,engineer2,engineer3指定parent="abstractEmployee,將自動繼承abstractEmployee的company和department屬性.同時子類也可以覆蓋模板中的屬性,比如engineer3