2012-07-11 331 views

回答

3

我們通常建議人們爲所有其他屬性的所有 強制合作者和setter注入使用構造函數注入。 同樣,構造函數注入確保所有強制性屬性都已滿足 ,並且無法實例化對象 處於無效狀態(未通過其協作者)。在其他 單詞中,當使用構造函數注入時,不必使用 專用機制來確保設置所需的屬性(而不是 正常的Java機制)。

更多細節http://blog.springsource.org/2007/07/11/setter-injection-versus-constructor-injection-and-the-use-of-required/

3

就個人而言,我傾向於構造函數注入,而我做的一個主要原因。

不變性。

對於不可變對象,使代碼線程安全更容易。這在處理彈性域對象時尤爲重要。如果它們是可變的,並且在不同的線程中訪問,則更改任何共享狀態是不安全的。

還有其他原因,不變性是有益的,但我會讓webpage繼續下去。

+0

你是對的關鍵點是不可變性。許多Spring用戶應該知道如何在不使用不可變對象時影響GC。 – 2013-05-27 11:29:42