1. 程式人生 > >控制反轉與依賴注入概述——Spring IOC/DI(一)

控制反轉與依賴注入概述——Spring IOC/DI(一)

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