8

私はまだ Guice を使い始めたばかりで、これまで DI フレームワークを使用したことがありません。公式の wiki や他の多くのドキュメントを読んだ後でも、まだ頭を完全に理解することはできません。

私の特定のケースでは、他の (注入される) クラスを使用する EL taglib 関数を作成したいと考えています。すべての taglib 関数は static として宣言する必要があるため、コンストラクターまたはセッターを介して依存関係を @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 に答える