8

我还是 Guice 的新手,之前没有使用过任何 DI 框架。在阅读了官方 wiki 和许多其他文档之后,我仍然无法完全理解它。

在我的特殊情况下,我想编写一个使用其他(待注入)类的 EL taglib 函数。由于所有 taglib 函数都必须声明为静态,我不能只通过构造函数或设置器 @Inject 我的依赖项。我想过使用http://code.google.com/p/google-guice/wiki/Injections#Static_Injections中描述的 requestStaticInjection() 方法,但我无法让它工作,也找不到任何好的教程。

提前感谢您的帮助,

阿尔曼

4

1 回答 1

20

它并没有比 Guice 文档更清楚,但这里有一个单元测试,显示了如何使用静态注入的示例:

public class StaticInjectionExample {

  static class SomeClass {}

  static class TagLib{
    @Inject
    static SomeClass injected;

    public static void taglibFunction(String foo) {
      injected.something(foo);
    }

  }

  static class TestModule extends AbstractModule {
    @Override
    protected void configure() {
      requestStaticInjection(TabLib.class);
    }
  }

  @Test
  public void test() {
    Injector injector = Guice.createInjector(new TestModule());
    TagLib receiver = injector.getInstance(TagLib.class);
    // Do something with receiver.injected
  }
}
于 2013-08-27T00:14:02.027 回答