计算机系统应用教程网站

网站首页 > 技术文章 正文

Spring IOC控制反转原理详解(图文并茂)

btikc 2024-10-15 09:02:38 技术文章 9 ℃ 0 评论

大家好,我是mikechen。

Java面试经常问到IOC控制反转,比如:IOC控制反转的作用原理等,下面我就来详解IOC控制反转@mikechen

本篇已经收纳于mikechen创作的《阿里架构师进阶专题合集》里面。

IOC控制反转

IOC,英文全称是Inversion of Control,翻译过来就是控制反转,所以很多提到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。

本篇已经收纳于mikechen创作的《阿里架构师进阶专题合集》里面。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表