Java 通过反射向Guice动态添加类

Java 通过反射向Guice动态添加类,java,google-app-engine,guice,Java,Google App Engine,Guice,在Guice中,甚至在Java中,是否可以迭代特定包中的所有类并将它们添加到Guice中 潜在问题:我希望能够将所有流量路由到/admin/*到一个servlet,该servlet会相应地重定向。然后,我希望能够将servlet添加到同一个包中,并自动获取它们。例如,如果导航到/admin/showcompanydeails,我希望它重定向到admin包中名为showcompanydeails.java的servlet 此外,我希望它能以这样的方式工作,我要做的就是添加更多的管理函数,将一个新类

在Guice中,甚至在Java中,是否可以迭代特定包中的所有类并将它们添加到Guice中

潜在问题:我希望能够将所有流量路由到/admin/*到一个servlet,该servlet会相应地重定向。然后,我希望能够将servlet添加到同一个包中,并自动获取它们。例如,如果导航到/admin/showcompanydeails,我希望它重定向到admin包中名为showcompanydeails.java的servlet

此外,我希望它能以这样的方式工作,我要做的就是添加更多的管理函数,将一个新类放到管理包中。也就是说,没有要更新的工厂方法,也没有要添加的容器

到目前为止,我最接近的方法是让重定向servlet创建一个包含所有管理servlet的模块的Guice注入器。但正如我所说,我希望避免必须更新Guice模块

此外,我希望这在AppEngine中成为可能


我想要一匹小马。

有一些可能性:

在Servlet类上使用Servlet 3@WebServlet注释,以便Servlet 3 web容器获取它们。然后可以使用Guice注入依赖项,请参见示例。 用于在类路径中绑定servlet类。它们必须通过注释包含类似于servlet 3的路径,或者为其提供访问器。然后,您可以创建一个guiceservlet模块,该模块从Guice检索所有这些servlet,并将它们作为servlet注册到它们提供的路径中。 这两种方法在AppEngine中都是可用的,但我还没有这方面的经验


如果只使用Object作为其基类,则获得小马很容易;p有一些可能性:

在Servlet类上使用Servlet 3@WebServlet注释,以便Servlet 3 web容器获取它们。然后可以使用Guice注入依赖项,请参见示例。 用于在类路径中绑定servlet类。它们必须通过注释包含类似于servlet 3的路径,或者为其提供访问器。然后,您可以创建一个guiceservlet模块,该模块从Guice检索所有这些servlet,并将它们作为servlet注册到它们提供的路径中。 这两种方法在AppEngine中都是可用的,但我还没有这方面的经验


如果只使用Object作为其基类,则获得小马很容易;是的,你确实想要一匹小马。换句话说,ewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww。但是,使用Guice servlet扩展并进行显式绑定要干净得多。@ben在Java中使用基于约定的IoC容器配置是一种不好的做法吗?我问这个问题的原因是因为它在C语言中很常见。大多数主要的容器都支持某种形式的自动注册。@KyleBaley它很常见,但已经过时了。这是因为auto magic与过多的框架相混淆,当您不了解大型项目中的内部结构时,调试会更加困难。明确的、易于理解的库是首选。每个包一个ServletModule是非常简单和明显的。是的,你确实想要一匹小马。换句话说,ewwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww。但是,使用Guice servlet扩展并进行显式绑定要干净得多。@ben在Java中使用基于约定的IoC容器配置是一种不好的做法吗?我问这个问题的原因是因为它在C语言中很常见。大多数主要的容器都支持某种形式的自动注册。@KyleBaley它很常见,但已经过时了。这是因为auto magic与过多的框架相混淆,当您不了解大型项目中的内部结构时,调试会更加困难。明确的、易于理解的库是首选。每个包的ServletModule非常简单和明显。