2016-07-14 142 views
0

摘自Spring doc構造基於依賴注入

的Spring團隊主張構造函數注入,因爲它使一個實現應用程序組件不可變對象,並確保所需的依賴不爲空。

我的問題是不變性以及空的依賴是否只能使用基於構造DI &是不是通過setter方法實現基於DI?

+1

如果您忘記調用setter,其相應的屬性將保持未初始化狀態,即null,編譯器不會抱怨。如果你首先有* setter,那麼你明確允許修改。你需要什麼樣的例子來說明這一點? – kryger

+0

調用setter會改變對象,所以我不確定我是否理解你的問題。 – zeroflagL

回答

0

如果您的類A爲類B的依賴對象公開了setter方法,那麼您可以在A的實例上調用setter方法並更改依賴關係。 如果您的類A只能通過構造函數參數接收類B的依賴對象,那麼您將組件作爲不可變對象,此外,自動裝配默認情況下不需要空對象,然後如果將空對象傳遞給構造函數參數spring不能實例化對象,確保所需的依賴關係不爲null。