我的应用程序中有两个类型绑定的命名实例:
bind(Foo.class).toProvider(FooProvider.class);
bind(Foo.class).annotatedWith(Names.named("prime")).toProvider(FooPrimeProvider.class);
我有一个班级想使用每个班级的一个实例。由于技术原因,此类不能直接注入实例,它必须向实例注入提供程序:
class Bar {
@Inject static Provider<Foo> fooProvider;
@Inject @Named("prime") static Provider<Foo> fooPrimeProvider; // WRONG!
}
问题是上面的 FooPrime 注入没有注入一个名为“prime”的实例,而是注入了一个名为“prime”的Provider,这当然不是我想要的。
如何告诉 Guice 为名为“prime”的 Foo 实例注入提供程序?