控制反转与依赖注入概述——Spring IOC/DI(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34598667/article/details/83275560

Spring IOC/DI(一)——控制反转与依赖注入概述

前面我们已经讲过了关于spring对bean的管理,下面我们来讲一下Spring的核心之一——IOC/DI。相信很多学过Spring同学都有一个问题,就是对控制反转和依赖注入晕晕乎乎的不太懂,这里简单给大家介绍一下到底什么是IOC,什么是DI以及它们的关系。


什么是IOC

Ioc:
Inversion of Control,即“控制反转”,首先它并不是一项技术,而是一种设计思想!
什么是控制:控制就是IOC(Spring)容器控制了对象,本来对象是由程序(我们写的)来控制的,创建和销毁等,但是现在是由容器来控制。

什么是反转:反转就是本来我们需要自己在对象中获取依赖对象但是现在由容器帮我们查找以及注入依赖对象,我们的对象只能被动接受依赖对象,依赖对象的获取被反转了。

所以控制反转实际上就是把对象的所有控制权全部反转交给IOC容器,这些控制权包括对象/资源的生命周期以及他们的依赖关系

举例:程序来控制对象就相当于我们自己做饭,让IOC容器控制就相当于找个厨师做饭,你把你想吃的东西和酸甜苦辣要求告诉厨师,然后他给你做,你负责吃。


什么是DI

DI
Dependency Injection,即“依赖注入”,它是IOC的另一种表示。意思是组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。
谁依赖谁?
应用程序依赖于IOC容器来提供对象需要的外部资源。
注入了什么?
IOC容器注入某个对象所需要的外部资源(包括对象、资源、常量数据)。
简单来说,依赖注入就是把容器需要的资源注入(加载)进去。本来程序的依赖关系有程序指定,但是现在对象都交给容器管理去了,依赖关系肯定也要交给容器。
举例:你找个厨师给你做饭,但是厨师得找材料,厨师可以使用蒸煮煎炸的方式给你做出来。这个过程就是依赖注入(所以依赖注入也有不同的方式)

PS:IOC是一种思想,DI可以看做IOC的实现方式!就相当于你跟厨师说你要吃什么,只是一个要求一句话,但是厨师做饭是加的材料等却是一个实现的过程。

下一章,依赖注入原理,作用,注入方式:
https://blog.csdn.net/qq_34598667/article/details/83315669

猜你喜欢

转载自blog.csdn.net/qq_34598667/article/details/83275560