Spring源码之IoC原理

什么是Ioc

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。--来自百度百科

控制反转更像是一种编程思想,主要是为了降低代码之间的耦合度,理解控制反转首先要弄清楚两点:1.什么是控制,控制了什么,谁控制了谁;2.什么是反转,哪些东西反转了。

  1. 控制:传统的创建对象的方法通常是通过new一个对象出来,那被控制的就是new出来的对象;而IoC是通过IoC专门的容器去创建对象,该对象的控制权掌握在了IoC容器手中,控制的对象也由单一的对象形式变成了多样的形式,例如对象和文件。
  2. 反转:传统的创建对象的方式,是主动在创建的对象中获取依赖对象的内容,这种方式被称为正转;而反转则是通过IoC容器去寻找和注入依赖对象,对象只是被动的接受依赖对象。

示例

IoC就好比是一家婚姻介绍所,A要去找对象只需要把要求告诉婚姻介绍所,他需要什么样的女生,比如身高168,体重100,长头发,大眼睛,身材一级棒。而婚姻介绍所就根据A的要求去寻找合适的对象然后介绍给B(查找和注入),然后A和B就开始互相了解(获取资源、数据)。

原文地址:https://www.cnblogs.com/lfeng1205/p/11254518.html