我的应用程序中绑定(bind)了两个类型的命名实例:
bind(Foo.class).toProvider(FooProvider.class);
bind(Foo.class).annotatedWith(Names.named("prime")).toProvider(FooPrimeProvider.class);
我有一个类(class)想使用每个类(class)的一个实例。由于技术原因,此类不能直接注入(inject)实例,它必须向实例注入(inject)提供程序:
class Bar {
@Inject static Provider<Foo> fooProvider;
@Inject @Named("prime") static Provider<Foo> fooPrimeProvider; // WRONG!
}
问题是上面的 FooPrime 注入(inject)没有注入(inject)一个名为“prime”的实例,而是注入(inject)了一个名为“prime”的 Provider,这当然不是我想要的。
如何告诉 Guice 为名为“prime”的 Foo 实例注入(inject)提供程序?
最佳答案
我刚刚写了一个测试,它完全符合您的要求:https://gist.github.com/jangalinski/4943871
关于guice - 将命名注释与 Guice 提供程序一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14839561/