控制反转 (IOC),面向对象的一种设计原则,目的是降低耦合度。依赖注入(DI)是实现控制反转的常见方式,控制反转的另外一种实现方式是 依赖查找。控制反转中的控制指的是自己控制(创建)自己的成员变量,反转指的是由通过自己去控制(创建)成员变量变成由第三方来传递给自身,也就是第三方将自己的依赖(所需的成员变量)注入到自身。

1. 控制反转

先描述一个场景:一个对象A要引用另外一个对象B, 那么需要在 A 中使用 new 关键字创建一个 B 对象,例如 在services层中调用你需要使用对应的 dao,你需要先创建该dao,这就增加了耦合度。

你可能会使用 工厂模式 去创建 dao,去减低耦合,Spring IOC 中使用的就是一个 基于 xml 的 超级工厂,可以在 xml 中集中的注册 bean,你要声明要注册bean的类全限定名和你想要给这个赋值的数据,Spring通过反射机制创建这个对象。

当然想要注册 bean和使用注册的bean需要先加载 xml 文件,然后可以使用 bean 工厂获得注册的 bean,Bean 工厂会自动将 对象A 所需 的对象 B 给赋值过去(也可以称作把对象A的依赖进行了注入)。

2. 依赖注入

依赖注入:依赖注入会将所依赖的关系自动交给目标对象,而不是让对象自己获取依赖。

实现依赖注入的两种方式:xml 和 注解,注解是为了减少 xml 中的配置。

Spring 使用 xml 装配 bean 的例子。

Spring使用注解(Annotation)进行bean的装配总结+实例。

Spring 中控制反转 和 依赖注入 的区别和关系相关推荐

  1. Spring中控制反转和依赖注入

    Spring之IOC控制反转和DI依赖注入 1.控制反转是什么? IOC控制反转,所谓反转是指使用方本身不负责依赖对象的创建和维护,而将对象的管理(创建.维护.销毁)都交给Spring容器管理,在使用 ...

  2. SSM框架—Spring基础—控制反转和依赖注入(概念)

    控制反转: 控制反转(IoC)是面向对象编程的一个设计原则,用于降低代码耦合度 在传统面向对象编程中,获取对象的方式是用关键字"new"主动创建一个对象,也就是说,应用程序掌握着对 ...

  3. Spring的控制反转与依赖注入

    学习过Spring的都知道Spring有三大核心的概念,分别是控制反转(IOC).依赖注入(DI)和面向切面编程(AOP).今天就来聊聊我对控制反转和依赖注入的了解,至于面向切面编程放到后面讲解. 一 ...

  4. Spring的控制反转以及依赖注入,控制反转使程序具有高拓展性。

    1. 控制反转(Inversion of Control, IOC) 将对象的创建.赋值.管理交给容器(Spring),通过xml文件即可修改对象的属性,不必修改源代码,具有高拓展性.各个模块间的对象 ...

  5. spring的控制反转和依赖注入讲解

    1.Spring 1.1 简介 2002年首次推出Spring的雏形,interface21框架 2004正式发布1.0版本 解决企业应用开发的复杂性,其理念是使现有的技术更加容易使用! SSH:St ...

  6. 控制反转和依赖注入的区别与联系

    1.IoC(Inversion of Control)控制反转:可以理解为,由Spring容器去管理所有bean对象的生命周期和它们之间的关系.在项目中我们可以在bean.xml配置文件中或者是注解中 ...

  7. 控制反转和依赖注入的区别

        Ioc:控制反转:控制反转就是加将组件的依赖关系从程序内部提到外部来管理     DI:依赖注入:依赖注入是指将组件的依赖通过外部以参数的方式或者其他方式注入 依赖注入是从应用程序的角度在描述 ...

  8. Spring框架中的控制反转和依赖注入

    控制反转: 控制反转是用来降低代码之间的耦合度的,基本思想就是借助"第三方"实现具有依赖对象的解耦. 为什么需要控制反转,因为项目中对象或多或少存在耦合.控制反转的关键在于Ioc容 ...

  9. 轻松了解Spring中的控制反转和依赖注入

    点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长 每天早上8点20分, 第一时间与你相约 每日英文 When you have something you really l ...

最新文章

  1. University of Edinburgh
  2. (转)ASIHTTPRequest 详解, http 请求终结者
  3. CodeForces - 1422E Minlexes(dp+字符串)
  4. 工作245:vue的注意规范之v-if 与 v-for 一起使用
  5. 新修订未成年人保护法6月1日正式实施
  6. 苏宁张近东:春节期间拿出3亿补贴一线员工
  7. Codeforces Educational Codeforces Round 3 D. Gadgets for dollars and pounds 二分,贪心
  8. jquery 让div滚动条自动滚动到最下面
  9. 1. JanusGraph的优势
  10. Sql Server 指定列的乘积
  11. 十代主板改win7_英特尔10代CPU完美装win7|新主板新CPU装win7 Bios设置
  12. 泊松分布(一种离散分布)
  13. 提升企业网站用户体验 你不可不知的秘诀
  14. 【网络工具】使用 iperf测试 udp组播
  15. 【转】浅谈程序猿的职业规划,看你如何决定自己的未来吧。
  16. 【中科院】分子生物学-朱玉贤第四版-笔记-第7-8讲 翻译
  17. wikioi 丘比特的烦恼 (最大权匹配)
  18. 怎么利用群控解决问题
  19. 灰度共生矩阵(GLCM)理解
  20. 如何创建出实用的员工手册?

热门文章

  1. MySQL:七种 SQL JOINS 的实现(图文详解)
  2. 基于A*算法的迷宫寻路
  3. Java 统计运行时间之 Apache Commons-lang3和Spring Core提供的StopWatch分析
  4. 移动WEB开发之flex伸缩布局
  5. 广搜(bfs)和 深搜(dfs)(新手)
  6. 网页制作中灯笼制作步骤
  7. Java面试题:Java+并发+Spring+MySQL+分布式+Redis+算法+JVM等,仅供参考
  8. python二维码特征定位与识别
  9. 零基础考计算机职称,教师中级职称计算机考试零基础通关方法和技巧
  10. 写了一个美篇图片爬虫,已开源