で複数のオブジェクトをバインドI Guiceのバインディングを使用して、次のコードがあります。私は自分のアプリケーションに注入された両方の名前のFoo
秒間Bar
オブジェクトを取得しようとしている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;
}
}
を。基本的には、@Named
をFoo
に接続し、Bar
に接続する必要があります。私は、Provider
を書いてすべてに@Named
を入れてから、いくつかの解決策を試しました。私はプロバイダ内の@Named
注釈の値にアクセスできないため、後者は機能しませんでした。私は解決策がbind(Bar.class).to(BarImpl.class);
のどこかにあり、@Named
注釈の値を覚えていると言います。
私の質問は、これはまったく可能ですか?あれば、どうですか?
ありがとうございます。これは有望です。私はmondayでそれを試してみるよ。 – Jorn
はい、これは私の問題を解決しました。再度、感謝します! – Jorn
あなたは大歓迎です! –