【发布时间】:2011-11-19 11:45:51
【问题描述】:
我已成功使用 Guice 将提供程序注入现有 Java Web 应用程序的 servlet 部分,但是,我无法通过应用程序的业务层(非 Servlet Java 类)访问注入器。
我已经阅读了 Injecting the Injector,但对我来说,这似乎更像是一个 hack,并且在包括 Guice 文档在内的多个地方,它说不要做太多。
我想我的问题是,我在哪里引导一个 java web 应用程序,以便非 servlet/filter 类可以访问在我用来扩展 GuiceServletContextListener 的类中创建的注入器?有什么方法可以在不注入注入器的情况下使这些类可注入?
谢谢,如果您需要任何澄清,请告诉我。
编辑:
到目前为止,我正在尝试使用一个简单的记录器来执行此操作 servlet,我称之为:
@Inject
private static org.slf4j.Logger log;
在 MyLoggerModule 中的注入设置如下(在 使用 ServletModule 调用 createInjector):
@Override
public void configure() {
bindListener(Matchers.any(), new SLF4JTypeListener()); // I
built my own SLF4JTypeListener...
}
这一切都在 servlet 中完美运行,但字段注入确实如此 被非 servlet 或过滤器的类调用时不起作用。
【问题讨论】:
标签: java servlets guice guice-servlet