Java面试经常问到IOC控制反转,比如:IOC控制反转的作用原理等,下面我就来详解IOC控制反转@mikechen
什么是IOC控制反转
IOC,英文全称是Inversion of Control,翻译过来就是控制反转,所以很多提到IOC,就叫IOC控制反转。
IOC控制反转作用
IOC控制反转能够将对象之间的依赖关系转移到容器中进行管理,从而降低了对象之间的耦合性,使得程序更加灵活、可扩展和易于维护。
通过IOC容器管理对象之间的依赖关系,可以使得对象更加独立、可重用,从而提高了程序的可重用性。
IOC控制反转原理
IOC不是一种技术,只是一种思想,它的核心思想是将对象的创建、组装和管理的控制权交给一个容器,而不是由对象自己进行创建和管理。
在没有IOC容器之前,传统应用程序都是由我们在类内部主动创建依赖对象,如下图所示:
这种方式,从而导致类与类之间高耦合,难于测试,于是后面就了IOC容器。
有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,而不是由对象自己进行创建和管理。
如下图所示:
上图引入了IOC容器,使得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了。
在IoC中,对象不再负责自己的创建和管理,而是被容器创建和管理,这就是IOC控制反转的核心思想。
IOC控制反转实现
在实现IOC的过程中,最重要的是依赖注入DI的机制。
DI的全称是Dependency Injection,中文称之为依赖注入,它与控制反转(IOC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。
在传统模式下,调用者通常会采用“new 被调用者”的代码方式来创建对象。
如图所示:
这种方式会导致调用者与被调用者之间的耦合性增加,不利于后期项目的升级和维护。
在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。
这样,控制权由应用代码转到了Spring容器,控制权发生了反转,这就是Spring的控制反转IOC。
以上就是IOC控制反转详解,更多内容请查看:Spring IOC最全详解(定义原理及注入方式)
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》