我已经成功地使用 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 或过滤器的类调用时,字段注入不起作用。