Spring中的父子Bean
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; } }
<bean id="test" abstract="true" class="com.pp.Person">
<property name="Sentence" value="Hello Spring"></property>
</bean>
<bean id="kev" parent="test">
<property name="Name" value="kev"></property>
</bean>
<bean id="dol" parent="test">
<property name="Name" value="dol"></property>
</bean>
<bean id="test" abstract="true" class="com.pp.Person">
<property name="Sentence" value="Hello Spring"></property>
</bean>
<bean id="kev" parent="test">
<property name="Name" value="kev"></property>
</bean>
<bean id="dol" parent="test">
<property name="Name" value="dol"></property>
</bean>
对上面代码进行测试:
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());
补充:软件开发 , Java ,