Bean definition inheritance
定义一个基类:
package com.myapp.core.inherit;
public class Father {
private String name;
private int age;
private String type;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String toString(){
return "["+name+","+age+","+type+"]";
}
}
对应的xml配置文件:
<!-- show the bean inheritance just see the following setting -->
<bean id="father" class="com.myapp.core.inherit.Father" >
<property name="name" value="tom"> </property>
<property name="age" value="50"></property>
</bean>
<bean id="son" parent="father">
<property name="age" value="24"></property>
<property name="type" value="child"></property>
</bean>
对应的测试类:
package com.myapp.core.inherit;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml");
Father son = (Father)context.getBean("son");
//Father father = (Father)context.getBean("father");
System.out.println(son);
}
}
输出结果:
[tom,24,child]
如果需要把基类定义为模板 需要在基类中加入 abstract="true" 属性
修改后为:
<span style="font-size:10px;">
<!-- show the bean inheritance just see the following setting -->
<bean id="father" class="com.myapp.core.inherit.Father" abstract="true" >
<property name="name" value="tom"> </property>
<property name="age" value="50"></property>
</bean>
<bean id="son" parent="father">
<property name="age" value="24"></property>
<property name="type" value="child"></property>
</bean>
</span>
定义为抽象的基类不能再获取对象了,因为不可实例化,
Father father = (Father)context.getBean("father");
如果实例化会报如下异常:
Exception in thread "main" org.springframework.beans.factory.BeanIsAbstractException: Error creating bean with name 'father': Bean definition is abstract