[spring]從頭開始-Bean Inheritance
開發工具:IntelliJ IDEA 13
開發環境:jdk1.6.0_45
Framework:spring 3
Java 類別可以用 extend 來實現繼承的關係,那bean可以實現繼承關係嗎?
答案是當然可以!!!之前我們使用 ctx.setParent(“beanName”) 來完成,現在我們改用xml來配置看看
下面就來看看範例:
首先先建立一個可用來演繹的bean
SimpleBean.java
package foo.bar;
import org.springframework.context.support.GenericXmlApplicationContext;
/**
* Created by Hsu on 2014/7/14.
*/
public class SimpleBean {
public String name;
public int age;
public static void main(String[] args) {
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.load("classpath:spring-config.xml");
SimpleBean parent = (SimpleBean) ctx.getBean("inheritParent");
SimpleBean child = (SimpleBean) ctx.getBean("inheritChild");
System.out.println("Parent:\n" + parent);
System.out.println("Child:\n" + child);
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Name: " + name + "\n"
+ "Age: " + age;
}
}
接著再配置一個對應的 spring configuration file
spring-config.xml
..
..標頭的部分省略
<bean id="inheritParent" class="foo.bar.SimpleBean">
<property name="name">
<value>Clarence Ho</value>
</property>
<property name="age">
<value>22</value>
</property>
</bean>
<!-- 指定繼承的 bean 名稱,使用parent="beanName" -->
<bean id="inheritChild" class="foo.bar.SimpleBean"
parent="inheritParent">
<property name="age">
<value>35</value>
</property>
</bean>
..結尾省略
我們可以看一下,第二個bean:inheritChild 沒有設定 name 這個 property,但是可以透過指定 parent 的方式,直接取道 parent 中的 name 值。
執行結果:
Parent:
Name: Clarence Ho
Age: 22
Child:
Name: Clarence Ho
Age: 35