Spring – 02 dependency injection, IoC

首先,我們來說說什麼是dependency ?

簡單來說,一個Java應用程式就是由很多個物件(Object)之間互動所組成的。這其中的互動關係就形成了所謂物件之間的dependency

以上面的例子來看,A class 就有兩個dependencies,分別是B, C class


而dependency injection 所指的就是這些dependencies並非是 A class 自己所創建,而是經由外部注入(injection),像上面例子我們可以看到,B,C的物件參考(object reference),可以透過A class的建構子(constructor)來傳入。

dependency injection的實作方式有好幾種,像上面例子就是”constructor injection”

另一種模式則是”setter injection”,顧名思義就是透過Java bean的setter機制來傳入物件參考,如下所示:

上面提到兩種注入方式,那麼又是誰來負責呼叫這些constructor 或是 setter 來達到依賴注入的效果呢?答案就是「Spring 容器 (container)」

在Spring 容器裡,我們會定義很多像上述A,B,C類型的物件,以Spring的術語來說叫做”Bean”
spring-container

Spring 作為一個IoC容器 ,其中一個重大的責任就是負責這些Bean的創建、處理Bean之間的依賴注入、管理Bean的生命週期

IoC (inverstion of control, 控制反轉) :物件之間的依賴關系由過去傳統的自行建立的方式轉變為「由容器操控」

下一篇,將會為大家介紹Spring 是怎麼實作IoC容器這麼一個概念的。

Facebook Comments