我有一个用@Example注释的bean。该bean实现了一些接口IExample
。我想通过使用其类名以编程方式注入此bean,但是我不想指定其限定符。
我收到不满意的依赖项错误,因为它正在使用@Any搜索Bean,并且此Bean具有@Any和@Example,由于某些原因,它们不能满足要求。
这可以在CDI中完成吗?
答案 0 :(得分:0)
如果一个bean是合格的,那么您需要通过其带有限定符的接口注入bean,这就是CDI的工作方式。即使使用Instance,也需要通过其限定符选择特定的实现,否则CDI应该如何知道您想要的实现?应该是有原因的。否则,您只能迭代所有找到的实现。
如果可以使用该类,然后直接注入实现类,则不需要限定符。之所以可行,是因为一个类始终是唯一的,一个类不能有多个实现,除非是抽象类,否则它是一个实现。
阅读此文档,以了解类型安全解析的工作原理,也许有助于弄清事情。
https://docs.jboss.org/weld/reference/latest/en-US/html/injection.html