アプリケーションにバインドされた型の名前付きインスタンスが 2 つあります。
bind(Foo.class).toProvider(FooProvider.class);
bind(Foo.class).annotatedWith(Names.named("prime")).toProvider(FooPrimeProvider.class);
それぞれのインスタンスを 1 つ使用したいクラスがあります。技術的な理由から、このクラスはインスタンスを直接注入することはできません。プロバイダーをインスタンスに注入する必要があります。
class Bar {
@Inject static Provider<Foo> fooProvider;
@Inject @Named("prime") static Provider<Foo> fooPrimeProvider; // WRONG!
}
問題は、上記の FooPrime インジェクションが「prime」という名前のインスタンスを注入していないことです。「prime」という名前のプロバイダーを注入していますが、これはもちろん私が望んでいるものではありません。
「prime」という名前の Foo インスタンスのプロバイダーを注入するように Guice に指示するにはどうすればよいですか?