guice - 将命名注释与 Guice 提供程序一起使用

标签 guice

我的应用程序中绑定(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/

相关文章:

Guice 实例化对象后调用 init 方法

java-8 - Guice按需注入(inject)

java - 在其模块中访问 Guice 注入(inject)器?

java - Guice MapBinder

java - MyBatis Guice 中 MyBatis XML 多环境等价物

java - 使用 Guice,如何将单元测试中的模拟对象注入(inject)到被测试的类中

java - 如何在 gerrit 插件中使用 LifecycleListener?

java - 如何在整个应用程序中访问 Guice 注入(inject)器

java - Guice:使用@Named 注入(inject)映射绑定(bind)

java - 使用泛型类进行 Scala 依赖注入(inject)