2011-07-18 101 views
2

我想使用依賴注入框架Guice:範圍相關的問題

在我的評價期間,我得出結論認爲Google Guice似乎最適合我的要求。

然而,一些問題我腦子裏浮現:

  1. 想象一下,用戶可以有一個HTTP Session內獨立窗口的Web應用程序。 Session範圍太籠統,而Request範圍對我來說太狹窄。
    有幫助我的範圍嗎? (這是我稱之爲「window」或「controller instance」範圍)

  2. 是否有任何陷阱定製範圍

  3. 我們的Web應用程序和幾個獨立的控制檯應用程序使用相同的類。我面臨的問題是類的範圍取決於應用程序類型,該應用程序類型僅在運行時處已知
    例如在獨立應用程序中,範圍將是「無範圍」或「每線程範圍」,而在web應用程序中,它將綁定到Session /「window」。
    如何解決這個問題?

回答

2
  1. 你必須創建一個custom scope
  2. 不,我知道了。我們一直在使用自定義範圍,並且工作得非常好。
  3. 已經在Web應用程序中使用和其他自定義範圍的不同實現爲獨立的應用程序
2

要回答3.使用不同的模塊,爲您的版本,並設置範圍存在。

bind(Grill.class).to(Applebees.class).in(Scopes.SINGLETON); 
1

您可以將範圍與使用應用程序上下文處理程序一起使用,這有助於決定範圍邏輯的工作方式。然後使用相同的自定義作用域,您可以控制在運行時如何創建對象。