Spring IOC/DI(一)——控制反转与依赖注入概述

前面我们已经讲过了关于spring对bean的管理,下面我们来讲一下Spring的核心之一——IOC/DI。相信很多学过Spring同学都有一个问题,就是对控制反转和依赖注入晕晕乎乎的不太懂,这里简单给大家介绍一下到底什么是IOC,什么是DI以及它们的关系。


什么是IOC

Ioc:
Inversion of Control,即“控制反转”,首先它并不是一项技术,而是一种设计思想!
什么是控制:控制就是IOC(Spring)容器控制了对象,本来对象是由程序(我们写的)来控制的,创建和销毁等,但是现在是由容器来控制。

什么是反转:反转就是本来我们需要自己在对象中获取依赖对象但是现在由容器帮我们查找以及注入依赖对象,我们的对象只能被动接受依赖对象,依赖对象的获取被反转了。

所以控制反转实际上就是把对象的所有控制权全部反转交给IOC容器,这些控制权包括对象/资源的生命周期以及他们的依赖关系

举例:程序来控制对象就相当于我们自己做饭,让IOC容器控制就相当于找个厨师做饭,你把你想吃的东西和酸甜苦辣要求告诉厨师,然后他给你做,你负责吃。


什么是DI

DI
Dependency Injection,即“依赖注入”,它是IOC的另一种表示。意思是组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。
谁依赖谁?
应用程序依赖于IOC容器来提供对象需要的外部资源。
注入了什么?
IOC容器注入某个对象所需要的外部资源(包括对象、资源、常量数据)。
简单来说,依赖注入就是把容器需要的资源注入(加载)进去。本来程序的依赖关系有程序指定,但是现在对象都交给容器管理去了,依赖关系肯定也要交给容器。
举例:你找个厨师给你做饭,但是厨师得找材料,厨师可以使用蒸煮煎炸的方式给你做出来。这个过程就是依赖注入(所以依赖注入也有不同的方式)

PS:IOC是一种思想,DI可以看做IOC的实现方式!就相当于你跟厨师说你要吃什么,只是一个要求一句话,但是厨师做饭是加的材料等却是一个实现的过程。

下一章,依赖注入原理,作用,注入方式:
https://blog.csdn.net/qq_34598667/article/details/83315669

控制反转与依赖注入概述——Spring IOC/DI(一)相关推荐

  1. 面试题:什么是控制反转和依赖注入?

      我们都知道控制反转和依赖注入是spring ioc的核心思想,也是面试经常被问到的话题,看到这篇文章又可以跟面试吹逼了,想要了解这两个就必须要了解设计原则中的依赖倒置原则 依赖倒置原则   指程序 ...

  2. Spring Ioc/DI 控制反转和依赖注入

    Ioc(Inversion of Control)和DI(Dependency Injection)的全称分别是控制反转和依赖注入. 如何理解这两个概念呢? Ioc Ioc(控制反转)实际上就说把对象 ...

  3. Spring容器,控制反转,依赖注入

    Spring boot学习之旅,为更好督促自己学习以记之,仅供参考. spring容器 程序启动的时候会创建spring容器,扫描给spring容器一个清单,比如:@Controller, @Bean ...

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

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

  5. IOC控制反转(依赖注入思想)

    IOC控制反转(依赖注入思想) 获取map 类型的 request session application 的方法: 实现RequestAware,SessionAware,ApplicationAw ...

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

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

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

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

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

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

  9. java json injection_Java Web实现IOC控制反转之依赖注入

    控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般分为两种类型,依赖注入 ...

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

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

最新文章

  1. 手机中的AR是怎么实现的
  2. ASP.NET MVC Unobtrusive JavaScript 实现 onfocusout 验证, onfocusin 清除错误
  3. Jexus~docker与它产生了暖味
  4. sqlite for linux 可视化数据管理工具
  5. Golang入门(1):安装与配置环境变量的意义
  6. android system_server中的dump_Android 10.0系统启动之SystemServer进程(二)
  7. iOS启动页广告XHLaunchAd
  8. 类的继承查询策略:广度优先
  9. 常用PAM模块--完全笔记
  10. c语言科学计数法输出1_e10,PAT 1024科学计数法的代码实现及错误分析(C语言)
  11. 3D数字孪生大屏怎么做?你需要了解这款数据可视化软件
  12. vue项目实现百度离线地图开发
  13. 分享一款实用的太阳能充电电路(室内光照可用)
  14. MEION:QA-MSK调制问题
  15. SQL数据库修复教程-浪潮GS7.0中了后缀是.5ss5c勒索病毒修复过程
  16. nova与neutron交互
  17. 什么是静态网站生成器
  18. 数据结构-栈(栈的C语言实现)
  19. 数量技术宅·安徽财经大学 线上策略分享会
  20. c语言编码数字的范围,C语言数据类型的表示范围

热门文章

  1. MongoDB 在windows shell环境下的基本操作和命令的使用示例(五)
  2. 《Web漏洞防护》读书笔记——第9章,XSS防护
  3. 【转载】一个c程序在执行main函数之前和main之后都做了那些事情
  4. Ajax : load()
  5. 一、HTML和CSS基础--HTML+CSS基础课程--第2部分
  6. phonegap plugin.xml 示例
  7. Mysql按时间段分组查询来统计会员的个数
  8. java垃圾收集器、Serial收集器、ParNew收集器、Parallel Scavenge收集器、Serial Old 收集器、CMS收集器、G1收集器、如何查看GC日志
  9. webpack-dev-server‘ is not recognized as an internal or external command
  10. 并发编程常见面试题总结三