2011-04-04 30 views
5

我正在尋找如何使用Guice在Web應用程序中獲得噴射器。我已經找到了一個使用ServletContext的解決方案,但我對此解決方案並不滿意,因爲它打破了應用程序的層次結構。我沒有在應用程序的更深層中使用ServletContext。你知道另一種方式嗎?在Web應用程序中獲取Guice噴射器

一個明顯的解決方案是創建我自己的singleton來託管注入器,但它似乎是Guice應該提供一些開箱即用的方法來做到這一點。我只是找不到一個...

回答

6

假設你使用Guice Servlet並假設你想要的類是注入自己,只需注入注入器。

1

您的應用程序生命週期完全由servlet容器控制,因此使用上下文偵聽器來啓動應用程序的初始化過程是該事實的邏輯結果。因此,我不會說這個事實本身並沒有打破分層架構,就像模型層中的Web請求開始活動既沒有破壞分層架構一樣。

但爲了不破壞分層體系結構,servlet上下文偵聽器不應該讓自己涉及其他層的細節,它應該只啓動初始化。因此,所有與Guice有關的代碼,例如Guice噴射器工廠,都應位於其自己的層中。上下文偵聽器的角色應限於啓動初始化的調用(例如:MyGuiceFactory.init()或MyApp.init())。