何らかの状態を保持し、インターフェースを実装するクラスがあります。このクラスは、構成が異なる GUICE モジュールで複数回登録する必要があります。このクラスには、GUICE によって注入される必要がある他の Bean への依存関係があります。例:
public class MenuItemImpl implements MenuItem {
@Inject
AnyService service;
public MenuItemImpl(String caption) {
this.caption = caption;
}
//...
}
c'tor パラメーターを使用する代わりに、パブリック セッターも使用できます。
Guice モジュールでは、MenuItemImpl クラスの複数のインスタンスをバインドしたいと考えています。
を使用しようとしましたがProvider<T>
、この場合、依存する Bean は注入されません。
Multibinder<MenuItem> binder = Multibinder.newSetBinder(binder(), MenuItem.class);
binder.addBinding().toProvider( new Provider<MenuItem>() {
@Override
public MenuItem get() {
return new MenuItemImpl("StartCaption");
}
}
@Assist アノテーションを見てみました。ただし、Bean を消費するときではなく、モジュールのバインディング フェーズ中に構成を指定したいと考えています。
私が目にする唯一の回避策は、構成ごとに異なるサブクラスを作成することです。これはスタイルが悪く、OOが意図したものではありません。