什么是IOC

Inversion Of Control(控制反转/反转控制),要注意的是IOC是一个技术思想,而不是一个技术实现。

IOC解决的问题

Java开发领域对象的创建、管理等问题

遇到的问题

在Java的开发过程中,我们经常需要在一个对象中引用另一个对象,这个时候就需要手动new一个对象,表明依赖关系。

IOC的解决

将对象的创建和管理交给IOC容器去做,我们只需要向IOC容器去拿就可以了。

整个的过程中,我们将对象的创建、管理等流程交给了IOC容器(Spring的IOC容器)去实现,这样我们就不需要考虑对象的创建和销毁等问题,同样的,我们也丧失了对象的管理权限。

控制

创建、管理对象的权利

反转

将控制权交给外部环境,这里的环境也就是Spring框架

解决的问题

创建和管理对象并且维护对象之间的依赖关系,最终其实就是解决对象之间的耦合关系。

如何解决对象的耦合关系

在面向接口的开发过程中,一个接口通常有多个实现,如果我们使用 new 来实现对象之间的依赖关系,就将接口与实现类进行了绑定,同样也在类中进行了对象的强依赖,这是一种强耦合关系。
解决的方法其实就是我么只需要进行声明接口,而不需要直接 new 到具体的实现类,将强耦合降低为低耦合。

IOC和DI的区别

DI

Dependancy Injection:依赖注入

IOC和DI描述的是同一件事情,即对象的创建和管理以及依赖关系的维护这件事
只不过是角度不同

  • IOC是站在对象的角度,也就是说将对象的创建以及管理的权利交给容器。
  • DI是站在容器的角度,描述的是对象依赖的注入,也就是在容器中会将一个对象的依赖对象注入到该对象中。

DI的概念是在IOC之后。