码迷,mamicode.com
首页 > 编程语言 > 详细

spring bean之间的关系:继承,依赖,依赖注入

时间:2018-06-15 15:57:27      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:注解   depends   return   不能   sys   span   杭州   def   lis   

一 继承

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方法注入,构造器注入,通过注解的方式注入。这里就不详细讲解了

spring bean之间的关系:继承,依赖,依赖注入

标签:注解   depends   return   不能   sys   span   杭州   def   lis   

原文地址:https://www.cnblogs.com/51life/p/9186991.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!