【问题标题】:Using Named annotations with Guice Providers在 Guice Providers 中使用命名注解
【发布时间】:2013-02-12 18:45:50
【问题描述】:

我的应用程序中绑定了一个类型的两个命名实例:

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 实例注入提供程序?

【问题讨论】:

  • 是不是行为不端?这看起来应该按照您希望的方式工作。

标签: guice


【解决方案1】:

我刚刚写了一个测试,它完全符合你的要求:https://gist.github.com/jangalinski/4943871

【讨论】:

  • 嗯,那我一定有不同的问题。将调查,感谢测试用例