Guice バインディングを使用した次のコードがあります。
public class MyApplication {
public static void main(String[] args) {
Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(Foo.class).annotatedWith(Names.named("first")).toInstance(new Foo("firstFoo"));
bind(Foo.class).annotatedWith(Names.named("second")).toInstance(new Foo("secondFoo"));
bind(Bar.class).to(BarImpl.class);
bind(MyApplication.class).asEagerSingleton();
}
});
}
private @Named("first") Bar first;
private @Named("second") Bar second;
static @Value class Foo { String name; }
static interface Bar {}
static class BarImpl implements Bar {
@Inject @Named Foo foo;
}
}
アプリケーションに注入されたBar
両方の名前付き のオブジェクトを取得しようとしています。基本的には、 onとon をFoo
何らかの方法で接続する必要があります。すべてを装着することからカスタムを作成することまで、いくつかの解決策を試しました。プロバイダー内の注釈の値にアクセスできないため、後者は機能しませんでした。解決策は行のどこかにあり、注釈の値を記憶するように指示していると思います。@Named
Foo
Bar
@Named
Provider
@Named
bind(Bar.class).to(BarImpl.class);
@Named
私の質問は、これはまったく可能ですか?