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

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

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

  新建实体类Student:

  1. public class Student {
  2.  
  3. //基本数据类型的变量
  4. private String name;
  5. //对象类型的变量,Address类代码省略
  6. private Address address;
  7. //数组类型的变量
  8. private String[] hobby;
  9. //list类型的变量
  10. private List<String> books;
  11. //Map类型的变量
  12. private Map<String,String> cards;
  13. //set类型的变量
  14. private Set<String> movies;
  15. //Properties类型的变量
  16. private Properties info;
  17. public void show(){
  18. System.out.println("name:"+name+"地址:"+address.getAddr());
  19. System.out.println("爱好有:");
  20. for(int i=0;i<hobby.length;i++){
  21. System.out.println(hobby[i]);
  22. }
  23. System.out.println("喜欢的书籍:"+books);
  24. System.out.println("拥有的银行卡"+cards);
  25. System.out.println("喜欢的电影"+movies);
  26. System.out.println("身份信息:"+info);
  27. }
  28. //set方法省略
  29. }

配置文件beans.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://www.springframework.org/schema/beans
  4. http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean id="address" class="com.wang.entity.Address">
  6. <property name="addr" value="青岛"></property>
  7. </bean>
  8. <bean id="student" class="com.wang.entity.Student">
  9. <!--配置基本数据类型 -->
  10. <property name="name" value="张三丰"></property>
  11. <!--配置对象类型 -->
  12. <property name="address" ref="address"></property>
  13. <!--配置数组类型 -->
  14. <property name="hobby" >
  15. <array>
  16. <value>吃饭</value>
  17. <value>睡觉</value>
  18. <value>打豆豆</value>
  19. </array>
  20. </property>
  21. <!--配置list类型 -->
  22. <property name="books">
  23. <list>
  24. <value>时光旅行者的妻子</value>
  25. <value>白发魔女传</value>
  26. <value>谁的青春不迷茫</value>
  27. </list>
  28. </property>
  29. <!--配置map类型 -->
  30. <property name="cards">
  31. <map>
  32. <entry key="农行卡" value="62284832128534"></entry>
  33. <entry key="建行卡" value="62284867867984"></entry>
  34. </map>
  35. </property>
  36. <!--配置set类型 -->
  37. <property name="movies">
  38. <set>
  39. <value>疯狂动物城</value>
  40. <value>叶问3</value>
  41. <value>功夫熊猫</value>
  42. </set>
  43. </property>
    <!--配置properties类型-->
  44. <property name="info">
  45. <props>
  46. <prop key="学号">20124280</prop>
  47. <prop key="班级">三年二班</prop>
  48. <prop key="性别">不详</prop>
  49. </props>
  50. </property>
  51. </bean>
  52. </beans>

测试代码:

  1. @Test
  2. public void test1(){
  3. ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
  4. Student s=(Student)context.getBean(Student.class);
  5. s.show();
  6. }

打印结果:

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

spring笔记--依赖注入之针对不同类型变量的几种注入方式的更多相关文章

  1. Spring Boot将Mybatis返回结果转为驼峰的三种实现方式

    本文不再更新,可能存在内容过时的情况,实时更新请访问原地址:Spring Boot将Mybatis返回结果转为驼峰的三种实现方式: 我们通常获取Mybatis返回的数据结果时想要将字段以驼峰的形式返回 ...

  2. Spring笔记——依赖注入

    依赖注入有三种方式: 1. 使用构造器注入  2. 使用属性setter方法注入 3. 使用Field注入(用于注解方式) 注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自 ...

  3. spring mvc:拦截器不拦截静态资源的三种处理方式

    方案一.拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml) <mvc:resources location="/" mapping="/**/* ...

  4. spring事务详解(基于注解和声明的两种实现方式)

    Spring事务( Transaction ) 事务的概念 事务是一些sql语句的集合,作为一个整体执行,一起成功或者一起失败. 使用事务的时机 一个操作需要多天sql语句一起完成才能成功 程序中事务 ...

  5. spring bean的init 方法和 destory方法的三种实现方式

    1.通过@Bean(initMethod ="initPerson",destroyMethod ="destroyPerson" ) public class ...

  6. Spring的三种注入

    在学习Spring的过程中,其中一个很重要的就是依赖注入DI,在此总结一下 注入方式有三种: 一.构造器注入 二.Set方式注入(重点) 三.扩展方式注入 构造器注入: a.默认使用无参构造函数创建对 ...

  7. Spring学习笔记--依赖注入

    依赖注入和控制反转:http://baitai.iteye.com/blog/792980出自李刚<轻量级 Java EE 企业应用实战> Java应用是一种典型的依赖型应用,它就是由一些 ...

  8. 【学习笔记】 使用XML配置和注解实现Spring的依赖注入DI (2-3-2)

    Spring的四个核心组件 1.beans Bean是包装应用程序自定义对象Object的 Object中保存数据 2.core  3.context 一个Bean的关系集合 4.expression ...

  9. Spring 学习笔记 ----依赖注入

    依赖注入 有三种方式,本文只学习下属性注入. 属性注入       属性注入即通过 setXxx方法()注入Bean的属性值或依赖对象,由于属性注入方式具有可选择性和灵活性高的优点,因此属性注入方式是 ...

随机推荐

  1. 例如筋斗云的效果,但不通过offset定位的flag标记

    效果:mouseenter到li上出现背景图片,mouseleave后背景图片消失,click以后该背景图片被锁定 问题:简单的mouseenter,mouseleave和click事件不能达到预期的 ...

  2. <十一>JDBC_事务的处理+隔离

    Tom给jerry汇款500元 1.如果多个操作,每个操作使用的是自己的单独的连接,则无法保证事务 2.具体步骤:   1>事务开始操作前,开始事务:取消Connection的默认提交行为 2& ...

  3. Oozie_初识

    Oozie 任务调度框架(基于工作流) oozie运行于hadoop集群,对hive,mr,flume,Soop,spark,shell等框架进行任务流调度 如: job1-->job2 &am ...

  4. spring quartz 配置实现定时任务 详解

    一. 编写定时任务JAVA类 比如: public class QuartzJob {     public QuartzJob(){         System.out.println(" ...

  5. 关于IOS浏览器:document,body的click事件触发规则

    今天做了个手机页面,点击某个按钮->弹出菜单,再点击菜单以外的任意位置->关闭菜单,在其他浏览器里面没有问题,但是在IOS浏览器中并不会关闭. 网上解决这个bug的帖子很多,这篇帖子主要是 ...

  6. ratina 视网膜屏幕解决方案大全

    第三方教程 http://www.tuicool.com/articles/JBreIn 知乎 https://www.zhihu.com/question/21653056 强烈推荐!!!最牛逼最专 ...

  7. poj1002-487-3279(字符串处理)

    一,题意: 中文题,不解释!二,思路: 1,处理输入的电话号码 2,排序num[]数组 3,输出三,步骤: 1,消除 -.Q.Z 三种字符,将一个电话号码转化为一个整数存如num[]数组 如:num[ ...

  8. Sequence Project Showplan Operator 序列映射运算符

    Sequence Project Showplan Operator 序列映射运算符 序列映射运算符会从一个已经排序的集合里通过不停添加集合里的列执行计算. 运算符根据一个或多个列的值把输入集合分为多 ...

  9. ABP理论学习之事件总线和领域事件

    返回总目录 本篇目录 事件总线 定义事件 触发事件 处理事件 句柄注册 取消注册 在C#中,我们可以在一个类中定义自己的事件,而其他的类可以注册该事件,当某些事情发生时,可以通知到该类.这对于桌面应用 ...

  10. Lesson 8 The best and the worst

    Text Joe Sanders has the most beautiful garden in our town. Nearly everbody enters for 'The Nicest G ...