6

アプリケーションにバインドされた型の名前付きインスタンスが 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 に指示するにはどうすればよいですか?

4

1 に答える 1

7

I just wrote a test, it does exactly what you want it to: https://gist.github.com/jangalinski/4943871

于 2013-02-13T11:05:30.343 に答える