Spring 入门学习 —— IOC 的基本概念(一)

264 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情

上一篇文章及之前文章我们介绍的是Spring 框架的基本组成。从本篇文章开始我们进入到Spring 框架的各个组成模块的介绍。

首先我们来介绍IOC 容器。本篇文章我们开始介绍IOC 的基本概念

IOC 的基本概念

IOC (Inversion of Control) 的中文意思通常被翻译成“控制反转”,通常通过DI (Dependency Injection) 依赖注入的方式实现。所以日常中很多人把这两个概念当做一回事。

在我们的通常开发过程中,如果我们依赖某个类,最简单的办法就是直接new 一个对象来完成响应的功能。举一个生活中的例子来说,这就好比我们想在海边生活,我们就立刻在海边自己建造一所房子;或者我们去寻找开发商,从他们手中买一所房子。

但是这两种做法的本质上都是需要我们自己去主动获取,但是转过来思考一下,我们最终所需要的其实仅仅就是依赖对象所提供的某种服务,仅此而已。

所以说,当我们每次用到某个对象的时候,是否真的需要自己去主动获取,我们是否可以考虑这样一种处理场景:我们在使用依赖对象的某些功能的时候,不需要管这个对象是自己找的还是别人送过来的,只需要知道它是准备就绪的,我们能使用它提供的某些功能就好。

实际上,IOC 的出现就是为了完成上述功能的。它的“反转”的意思就是:让你从之前必须亲自去获取对象,改变为直接“享受服务”就可以了。

之前得通过某种方式自己去获取对象,但是现在,直接让某个角色将对象送来即可。这样说可能比较抽象,但是我们只要记住IOC 的理念即可,即:让别人为你服务。在Spirng 中,也就是让IOC 容器来为你服务。

再具体一点说,我们可以将某个场景划分为两个角色:

  1. 需要被注入对象的对象
  2. 被依赖的对象

被注入对象的对象是需要依赖其他对象的功能;被依赖的对象就是需要给“被注入对象的对象”提供其功能的对象。

通常来说,被注入的对象是需要依赖被依赖的对象的,但是如果我们使用了IOC,那么就可以直接通过IOC 来完成对象之间的依赖关系的管理了。

IOC 的执行流程其实很简单,不使用IOC 的时候,需要什么是要自己去获取的;使用IOC 之后,需要什么东西就让别人送过来就好了。

总结

对我们来说,上面的两种场景那种比较好肯定是显而易见的了。这也是IOC 存在的意义。