spring bean之間的關系:繼承,依賴,注入


一 繼承

spring中多個bean之間的繼承關系,和面向對象中的繼承關系類似,直接看代碼。

先定義一個Person類

package com.demo.spring.entity;

/**
 * @author chenyk
 * @date 2018年6月15日
 */

public class Person {
    private String name;
    private String address;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    
}

然后在beans.xml文件中配置:

    <bean id="person" class="com.demo.spring.entity.Person" p:address="杭州" abstract="true">
    </bean>
    
    <bean id="person2" p:name="李四"  parent="person">
    </bean>

在beans.xml中,我們定義了一個name為person的抽象類,它作為一個父類,封裝了共有的屬性值address="杭州",由於定義了abstract="true",所以它不能被實例化。然后定義了一個name為person2的類,繼承了person。

獲取person2對象

    @Test
    public void testBeanFactory(){
        ClassPathResource resource = new ClassPathResource("beans.xml");  //找到資源文件,將bean解析為beanDefinition,
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
        reader.loadBeanDefinitions(resource); //加載beanDefinition到容器中
        Person person2 = (Person) beanFactory.getBean("person2");
        System.out.println("name="+person2.getName()+";address="+person2.getAddress());
    }

運行結果:name=李四;address=杭州

二 依賴:使用depends-on來實現依賴關系

定義一個Person類

package com.demo.spring.entity;

/**
 * @author chenyk
 * @date 2018年6月15日
 */

public class Person {
    private String name;
    private String address;
    private Air air;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public Air getAir() {
        return air;
    }
    public void setAir(Air air) {
        this.air = air;
    }
}

定義Air類

package com.demo.spring.entity;

/**
 * @author chenyk
 * @date 2018年6月15日
 */

public class Air {

}

在beans.xml中配置

    <bean id="person" class="com.demo.spring.entity.Person" p:name="張三" p:address="杭州" abstract="true">
    </bean>
    
    <bean id="person2" p:name="李四"  parent="person" depends-on="air">
    </bean>
    
    <bean id="air" class="com.demo.spring.entity.Air">
    </bean>

depends-on標簽設置了依賴關系,則表示person2的屬性air必須存在,否則報錯;如果沒有depends-on標簽,則默認person2的屬性air為null。

三 注入 :

注入,我們也可以稱為依賴注入,注入的方式有三種:setter方法注入,構造器注入,通過注解的方式注入。這里就不詳細講解了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM