一、什么是IOC

ioc是一个英文缩写,英文全称是 Inversion of Control,翻译过来是“控制反转”。理解好Ioc的关键是要明确“谁控制谁,控制了什么,为何是反转,哪些方面反转了”

  • 谁控制谁:ioc是一种设计思想,它将有别与传统的编写代码方式。通常我们在需要用到对象的属性或方法时,都是手动去new一个对象,这种方式是主动去获取对象实例,ioc则是把对象的创建以及对象之间的依赖关系交给Spring ioc容器管理,这样控制权就被反转了,由主动控制变成被动接受。所以是ico控制了对象。
  • 控制了什么:控制了对象的生命周期以及对象之间的依赖关系。
  • 为何是反转:本来对象是我们手动去创建的,使用ioc后,变成了被动去接受,所以对象的控制权被反转了。
  • 哪些方面反转了:对象的获取反转了,由主动创建变成被动接受。

二、IOC和DI

DI的英文全称是Dependency Injection,即“依赖注入”。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。理解依赖注入的关键是“谁依赖谁,为什么要依赖,谁注入谁,注入了什么”

  • 谁依赖谁:应用程序依赖io容器。
  • 为什么要依赖:应用程序需要ioc容器提供对象需要的资源;
  • 谁注入谁:ioc容器为应用程序对象注入所依赖的对象。
  • 注入了什么:注入了某个对象所需要的资源。

IoC的基本概念的更多相关文章

  1. 工厂类,配置文件,静态方法,反射构成编译器解耦;ioc的一个概念 ;通过xml创建容器里面存储对象

    工厂类,配置文件,静态,反射方法构成编译器解耦;ioc的一个概念

  2. Spring.Net---2、IoC/DI基本概念

    ---------------------------------------------------------------------------------- (1)IoC/DI的概念 IoC ...

  3. IoC容器Autofac之IOC/DI基本概念(二)

    原文:http://www.cnblogs.com/xdp-gacl/p/4249939.html 1.1.IoC是什么 Ioc—Inversion of Control,即“控制反转”,一种设计思想 ...

  4. Spring+IOC(DI)+AOP概念及优缺点

    Spring pring是一个轻量级的DI和AOP容器框架. 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应 ...

  5. 【spring揭秘】1、关于IOC的基础概念

    1.基础概念 IOC有三种注入方式: 1.构造方法注入,就是通过构造方法进行实例化成员属性对象,优点是实现对象之后直接就可以使用,但是参数过多也是个麻烦 2.setter方法注入,实现相应的sette ...

  6. spring揭秘读书笔记----ioc的基本概念

    在看ico概念之前,先想一下我们平常需要依赖某个类时会怎么做? 无非是在要用到的地方写如下代码: Person person = new Person(); //然后就可以用person对象来获取Pe ...

  7. JavaWeb_(Spring框架)Spring中IoC与DI概念入门

    Spring是于2003 年兴起的一个轻量级的Java 开源框架,它由Rod Johnson创建.传统J2EE应用的开发效率低,Spring作为开源的中间件,提供J2EE应用的各层的解决方案,Spri ...

  8. Spring框架IOC,DI概念理解

    1.什么是框架? 框架是一种重复使用的解决方案,针对某个软件开发的问题提出的. Spring框架,它是一个大型的包含很多重复使用的某个领域的解决方案. Spring的理念:不要重复发明轮子. 2.Sp ...

  9. spring揭密学习笔记(2)-spring ioc容器:IOC的基本概念

    1. IoC的理念就是,让别人为你服务!2. 其实IoC就这么简单!原来是需要什么东西自己去拿,现在是需要什么东西就让别人送过来.一个生动的示例 3.三种依赖注入的方式 IoC模式最权威的总结和解释, ...

随机推荐

  1. javascript 浮点数加减乘除计算会有问题, 整理了以下代码来规避这个问题

    /* * js数学计算 add by yan */ /** ** 加法函数,用来得到精确的加法结果 ** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较 ...

  2. 为什么NoSql快--磁盘顺序写

    数据写入方式 1.  update-in-place原地更新 2.  append-only btree/copy on write tree顺序文件末尾追加   数据被按照特定方式放置,提升读性能, ...

  3. Java HashMap两种遍历方式

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  4. python环境准备以及easy_install和pip的安装

    python3的安装: yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline- ...

  5. oracle vm中的xp添加共享文件夹

      接着就可以在虚拟的电脑系统里面打开我们的共享文件夹,在桌面找到”网络邻居“,双击打开   我们需要通过”添加一个网络邻居“来加载我们刚才添加的”共享文件夹“,根据向导一步步执行   然后点击”浏览 ...

  6. How to read very large text files fast

    Question Does anyone know the fastest way to read large text files (10Mb) into a string.Readln is ju ...

  7. sysdig

    centos 7 安装 https://sysdig.com/opensource/sysdig/install/ 1) Trust the Draios GPG key, configure the ...

  8. LeanCloud

    [Nodejs 访问 LeanCloud] 代码中使用 SDK: var AV = require('avoscloud-sdk') AV.initialize('AppID', ''AppKey) ...

  9. LocalDateTime json格式化

    参考https://www.cnblogs.com/xiaozhang9/p/jackson.html?utm_source=itdadao&utm_medium=referral <d ...

  10. tf.unstack()、tf.stack()

    tf.unstack 原型: unstack( value, num=None, axis=0, name='unstack' ) 官方解释:https://tensorflow.google.cn/ ...