Spring種提供了2種常用的注入方式,set方法注入和構造函數注入。由于這2種注入方式很相似,都可以滿足我們的需求,是以在大多數情況下我們忽視了這2種注入方式的差別。下面讓我們看看這2種注入方式的特點。
目錄
一、設值注入(set)
二、構造器注入
三、總結
一、設值注入(set)
我們先看看Spring在使用set方法注入時,是怎樣執行個體化一個Bean和Bean的合作者的:

在A中有一個setB方法用來接收B對象的執行個體。那麼Spring執行個體化A對象的過程如下:
在不考慮Bean的初始化方法和一些Spring回調的情況下,Spring首先去調用A對象的構造函數執行個體化A,然後查找A依賴的對象本例子中是B(合作者)。一但找到合作者,Spring就會調用合作者(B)的構造函數執行個體化B。如果B還有依賴的對象Spring會把B上依賴的所有對象都按照相同的機制執行個體化然後調用A對象的setB(B b)把b對象注入給A。
因為Spring調用一個對象的set方法注入前,這個對象必須先被執行個體化。是以在"使用set方法注入"的情況下Spring會首先調用對象的構造函數。
二、構造器注入
我們在來看通過構造函數注入的過程: