2012-03-28 65 views
1

Guice(甚至通常在Java中)是否可以迭代特定包中的所有類並將它們添加到Guice中?通過反射動態地向Guice添加類

潛在問題:我希望能夠將所有流量路由到/ admin/*到相應重定向的單個servlet。然後,我希望能夠將servlet添加到相同的包中,並讓它們自動拾取。例如。如果我導航到/ admin/showCompanyDetails,我希望重定向到一個名爲showCompanyDetails.java的管理包中的servlet。

此外,我希望這樣工作,所有我需要做的添加更多管理功能是將一個新類放入管理包中。即沒有工廠方法更新,也沒有容器添加到。

到目前爲止,我最接近的就是讓重定向servlet創建一個Guice注入器,其中包含一個包含所有管理servlet的模塊。但正如我所說,我想避免更新Guice模塊。

另外,我希望這可以在AppEngine。

我想要一隻小馬。

+0

呀,你想一匹小馬。換句話說,ewwwwwwwwwwwwwwwwww。 – 2012-03-29 00:49:27

+0

如果你走的是類路徑,那麼你可以評估所有的類和jar文件。但是,使用Guice servlet擴展並進行顯式綁定更爲清晰。 – 2012-03-29 05:01:40

+0

@ben在Java中使用基於約定的IoC容器配置是不好的做法嗎?我問這個問題的原因是因爲它在C#中很常見。大部分主要容器都支持某種形式的自動註冊。 – 2012-03-31 02:34:47

回答

0

有一些可能性:

  • 使用Servlet的3個@WebServlet你的servlet類註釋,所以他們得到一個Servlet 3的Web容器回升。然後你可以使用Guice來注入依賴關係,例如here
  • 使用guice-automatic-injection在您的類路徑中綁定您的servlet類(它們必須通過註釋包含它們類似於Servlet 3的路徑或爲其提供一個訪問器)。然後,您可以創建一個Guice servlet模塊,它從Guice中檢索所有這些servlet,並將它們註冊爲servlet到其提供的路徑。

這兩種方式都可以在AppEngine中使用,但我還沒有經驗。

獲得一匹小馬,如果你只使用Object作爲它的基類是很容易,P