2012-03-28 54 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