• 依赖注入之针对不同类型变量的几种注入方式


     控制反转(Inversion of Control)和依赖注入(Dependency Injection)讲的都是一个概念,只不过是站在了不同的角度,所谓的依赖注入:

      依赖注入(DI)是指在运行期,由外部容器动态地将依赖对象注入到组件中。当spring容器启动后,spring容器初始化,创建并管理bean对象,以及销毁它。所以我们只需从容器直接获取Bean对象就行,而不用编写一句代码来创建bean对象。这种现象就称作控制反转(Ioc),即应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转

      下面介绍各种类型属性的注入方式:

      新建实体类Student:

    复制代码
    public class Student {
    
        //基本数据类型的变量
        private String name;
        //对象类型的变量,Address类代码(只有一个属性 private String addr()  setter() getter())
        private Address address;
        //数组类型的变量
        private String[] hobby;
        //list类型的变量
        private List<String> books;
        //Map类型的变量
        private Map<String,String> cards;
        //set类型的变量
        private Set<String> movies;
        //Properties类型的变量
        private Properties info;
            public void show(){
            System.out.println("name:"+name+"地址:"+address.getAddr());
            System.out.println("爱好有:");
            for(int i=0;i<hobby.length;i++){
                System.out.println(hobby[i]);
            }
            System.out.println("喜欢的书籍:"+books);
            System.out.println("拥有的银行卡"+cards);
            System.out.println("喜欢的电影"+movies);
            System.out.println("身份信息:"+info);
        }
    //set方法省略
    }
    复制代码

    配置文件beans.xml:

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="address" class="com.wang.entity.Address"> <property name="addr" value="青岛"></property> </bean> <bean id="student" class="com.wang.entity.Student"> <!--配置基本数据类型 --> <property name="name" value="张三丰"></property> <!--配置对象类型 --> <property name="address" ref="address"></property> <!--配置数组类型 --> <property name="hobby" > <array> <value>吃饭</value> <value>睡觉</value> <value>打豆豆</value> </array> </property> <!--配置list类型 --> <property name="books"> <list> <value>时光旅行者的妻子</value> <value>白发魔女传</value> <value>谁的青春不迷茫</value> </list> </property> <!--配置map类型 --> <property name="cards"> <map> <entry key="农行卡" value="62284832128534"></entry> <entry key="建行卡" value="62284867867984"></entry> </map> </property> <!--配置set类型 --> <property name="movies"> <set> <value>疯狂动物城</value> <value>叶问3</value> <value>功夫熊猫</value> </set> </property>
    <!--配置properties类型-->
    <property name="info"> <props> <prop key="学号">20124280</prop> <prop key="班级">三年二班</prop> <prop key="性别">不详</prop> </props> </property> </bean> </beans>
    复制代码

    测试代码:

    复制代码
    @Test
        public void test1(){
            ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
            Student s=(Student)context.getBean(Student.class);
            s.show();
        }
    复制代码

    打印结果:

    name:张三丰地址:青岛
    爱好有:
    吃饭
    睡觉
    打豆豆
    喜欢的书籍:[时光旅行者的妻子, 白发魔女传, 谁的青春不迷茫]
    拥有的银行卡{农行卡=62284832128534, 建行卡=62284867867984}
    喜欢的电影[疯狂动物城, 叶问3, 功夫熊猫]
    身份信息:{学号=20124280, 性别=不详, 班级=三年二班}

  • 相关阅读:
    Java Web项目开发中常见路径获取方法
    Genymotion模拟器连接不上开发服务器解决办法
    百度鹰眼轨迹管理台部署到本地或者服务器上
    解决Hibernate4执行update操作,不更新数据的问题
    后台发送http请求通用方法,包括get和post
    Java后端发出post请求带参数并接收返回的json
    $.ajax()方法详解
    常见异常及解决办法
    jQuery通过地址获取经纬度demo
    python 导入模块与使用
  • 原文地址:https://www.cnblogs.com/hoobey/p/6013155.html
Copyright © 2020-2023  润新知