zoukankan      html  css  js  c++  java
  • 依赖注入之针对不同类型变量的几种注入方式

     控制反转(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, 性别=不详, 班级=三年二班}

  • 相关阅读:
    【数据结构】线性表&&顺序表详解和代码实例
    【智能算法】超详细的遗传算法(Genetic Algorithm)解析和TSP求解代码详解
    【智能算法】用模拟退火(SA, Simulated Annealing)算法解决旅行商问题 (TSP, Traveling Salesman Problem)
    【智能算法】迭代局部搜索(Iterated Local Search, ILS)详解
    10. js时间格式转换
    2. 解决svn working copy locked问题
    1. easyui tree 初始化的两种方式
    10. js截取最后一个斜杠后面的字符串
    2. apache整合tomcat部署集群
    1. apache如何启动
  • 原文地址:https://www.cnblogs.com/hoobey/p/6013155.html
Copyright © 2011-2022 走看看