当前位置:编程学习 > JAVA >>

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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,