指定されたタイプのオブジェクトをインスタンス化した後、Guiceに何らかのメソッド(つまりinit())を呼び出すように指示することは可能ですか?
EJB 3(およびSpring)の@PostConstructアノテーションに似た機能を探しています。
指定されたタイプのオブジェクトをインスタンス化した後、Guiceに何らかのメソッド(つまりinit())を呼び出すように指示することは可能ですか?
EJB 3(およびSpring)の@PostConstructアノテーションに似た機能を探しています。
メソッドに@Inject
アノテーションを追加するだけです。init()
オブジェクトがインスタンス化された後、自動的に実行されます。
実際、それは可能です。
機能を有効にするには、 を定義する必要があります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();
}
});
}
});
私はhttp://code.google.com/p/mycila/wiki/MycilaGuiceが好きです。これは、 http: //code.google.com/p/guiceyfruit以外のGuice3をサポートします。