2013-02-04 40 views
3

我對Guice比較陌生,所以這可能是一個基本的問題。它看起來像Guice可以選擇require explicit bindings。需要顯式綁定有沒有明顯的優勢?有沒有人經常在實踐中使用這個選項?Guice設計模式:需要顯式綁定的優點?

+0

新的requireAtInjectOnConstructors()方法是更有用的恕我直言。請參閱https://code.google.com/p/google-guice/source/browse/core/src/com/google/inject/Binder.java#485 – NamshubWriter

回答

4

我們在實踐中使用這個選項。我們只使用Guice將我們的應用程序連接在一起,而不是用於任何類型的按請求對象構造。因此,我們的大多數綁定都在Singleton範圍內 - 例如,我們希望我們的業務邏輯和統計接口都可以使用同一個持久層對象。

如果沒有明確的綁定,Guice將嘗試使用JIT綁定來滿足注入點。該綁定將在「無範圍」範圍內完成,該範圍爲每個注入點提供新的對象實例。這幾乎從來沒有我們想要的,並導致奇怪的運行時錯誤。強制顯式綁定迫使人們考慮並枚舉每個綁定的範圍。

2

我最近坐了一個1小時的調試會話,因爲我們沒有使用這個配置。問題在於,當我預期單身人士時,會創建多個實例。強制顯式綁定是一個很好的提示,可以考慮它是否應該是單例。

+0

如果解釋了* how * the,這個答案會更有用。不使用此配置導致難以追蹤的錯誤;你有什麼「容易犯的錯誤」? – ruakh