zoukankan      html  css  js  c++  java
  • 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方法注入,构造器注入,通过注解的方式注入。这里就不详细讲解了

  • 相关阅读:
    [导入]Repeater与DataGrid的效率,到底哪个的更好?!(结论很可能和你认为的不一样!)
    开发工具的选择
    在WINDOWS 下删除EISA配置的隐藏分区
    DNN使用升级包升级
    DNN中代码创建用户的CreateUser()方法的疑问
    eWebEditor的数据库连接字符串
    c/c++笔试题目(林锐)
    如何下载网页中的flash文件
    DotNetNuke: System.Security.Cryptography.CryptographicException: Bad Data
    win7安装iis错误解决方法汇总
  • 原文地址:https://www.cnblogs.com/51life/p/9186991.html
Copyright © 2011-2022 走看看