69

指定されたタイプのオブジェクトをインスタンス化した後、Guiceに何らかのメソッド(つまりinit())を呼び出すように指示することは可能ですか?

EJB 3(およびSpring)の@PostConstructアノテーションに似た機能を探しています。

4

8 に答える 8

65

メソッドに@Injectアノテーションを追加するだけです。init()オブジェクトがインスタンス化された後、自動的に実行されます。

于 2011-05-20T14:01:43.433 に答える
46

実際、それは可能です。

機能を有効にするには、 を定義する必要がありますTypeListener。モジュール定義の次の行に沿ったもの:

bindListener(Matchers.subclassesOf(MyInitClass.class), new TypeListener() {
    @Override
    public <I> void hear(final TypeLiteral<I> typeLiteral, TypeEncounter<I> typeEncounter) {
        typeEncounter.register(new InjectionListener<I>() {
            @Override
            public void afterInjection(Object i) {
                MyInitClass m = (MyInitClass) i;
                m.init();
            }
        });
    }
});
于 2010-01-19T13:46:42.320 に答える
7

私はhttp://code.google.com/p/mycila/wiki/MycilaGuiceが好きです。これは、 http: //code.google.com/p/guiceyfruit以外のGuice3をサポートします。

于 2011-04-15T10:13:10.407 に答える