1.简介
官方定义:控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
白话:“控制反转”的意思是由原先程序员显式的手动控制对象的创建和管理,变为由spring容器隐式的通过反射机制来创建对象和依赖注入,并集中管理对象的生命周期。“依赖注入”的意思是由原本消费者主动的寻找供给者的模式,转变为由spring容器自动将供给者的注入到消费者的模式,其实两个都是同一种概念,只是角度不同。
2.开发背景
还没有提出IOC概念之前,古代程序员编写的代码之间就像机械表的各个齿轮之间一样密不可分,而这就造成了各个组件之间耦合度过大,造成了系统容错率极低。
![](https://i-blog.csdnimg.cn/blog_migrate/b9f1f52411b21d0a98418498348cfbdc.png)
3.作用
![](https://i-blog.csdnimg.cn/blog_migrate/47fb6be227fd092f822a0f3f3b8949f5.png)
主要作用就是降低代码之间的耦合度,提高代码的可维护性和健壮性,可重用性。
4.具体实现
没有IOC之前。我们创建对象一般只能通过new一个对象
有了IOC之后我们可以通过Spring框架提供的自动装配(IOC)来创建对象