【发布时间】:2015-03-26 15:56:10
【问题描述】:
我在尝试注入绑定了两个服务的合同时遇到问题。
我正在使用 Jersey,并扩展 ResourceConfig 来配置我的应用程序,我将两个不同的实现(类 FooImpl1 和 FooImpl2)绑定到同一个合约(接口 Foo),并对它们进行排名不同。这些实现中的每一个都使用@Named 及其名称进行注释。
在我的一个控制器中,我想同时访问这两种实现,所以我注入了一个IterableProvider<Foo> fooProvider。
如果我不指定任何内容,则始终注入最高级别的实现,这就是我想要的。
当我想要一个具体的实现时,问题就出现了,其中之一。当我调用 fooProvider.named( nameOfTheClass ).get() 时,返回 null,但如果我遍历 fooProvider,我可以访问这两个实现,因此它们被注入。
有人知道我可能缺少什么吗?
非常感谢您的帮助。
【问题讨论】:
-
代替
named( nameOfTheClass ),试试named( namedAnnotationValue ),如javadoc中所述 -
namedAnnotationValue 是与 nameOfTheClass 相同的字符串。
标签: java dependency-injection jersey jersey-2.0 hk2