Spring的父子Bean出现,我估计是会了有效的减少Spring上下文定义文件里冗余的XML.直白一点,就是对原来的Bean进行继承与扩展,这样就原有Bean中的定义就不用再继承的Bean里重新写一遍啦。
为了支持这种特性,Bean元素提供了两个特殊的属性:
parent:指明继承的父类Bean的id
abstract:如果设置为true,就表示bean的声明是抽象的,Spring不能对其进行实例化,只是用来供其他Bean进行扩展的,但也可以设置为假,这时父Bean也可以实例化。
测试源代码:
//一个普通的JavaBean public class Person { //人的名字 private String name; //这个人要说的话 private String sentence; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSentence() { return sentence; } public void setSentence(String sentence) { this.sentence = sentence; } } //一个普通的JavaBean public class Person { //人的名字 private String name; //这个人要说的话 private String sentence; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSentence() { return sentence; } public void setSentence(String sentence) { this.sentence = sentence; } }
对上面代码进行测试:
BeanFactory factory=new XmlBeanFactory(new ClassPathResource("person.xml"));
Person kev=(Person)factory.getBean("kev");
System.out.println(kev.getSentence());
Person dol=(Person)factory.getBean("dol");
System.out.println(dol.getSentence());