2017-04-24 66 views
1

在基於構造函數的注入中,它將創建具有所有依賴關係的完整對象,但是如何在基於注入者的注入情況下創建具有部分依賴項的對象?爲什麼setter注入不能確保在Spring中依賴注入?

+0

setter是一個方法調用,並不保證該方法會被調用。使用構造函數,您無法構造處於無效狀態的對象。 –

+1

Spring會調用默認的構造函數,然後嘗試通過setter將值注入到此實例。你不會看到差異。無論如何,你會得到一個構造良好的物體。 – Andrew

+0

@ M.Deinum:根據我的理解,setter在默認情況下從春季被調用,那麼它怎麼會錯過? –

回答

0

當需要依賴關係時,應使用基於構造函數的注入,因爲創建對象的唯一方法是擁有所有參數。

當不需要依賴性時,應使用基於安裝人員的注射。該對象首先實例化,然後調用依賴關係的設置者,但是,如果未找到依賴關係,則它將注入null。

您可以混合使用基於構造函數和基於Setters的注入。

+0

它不會注入'null'。對於不需要依賴關係的情況,它根本不會調用setter。 –