当前位置: 首页 > 知识库问答 >
问题:

如何通过类名以编程方式注入CDIBean

边浩漫
2023-03-14

我有一个用@Example注释的bean。这个bean实现了一些接口IExample。我想通过使用它的类名以编程方式注入这个bean,但我不想指定它的限定符
我得到了一个不满意的依赖项错误,因为它正在搜索带有@Any的bean,而这个bean有@Any和@Example,由于某种原因,它不满足

这可以在CDI中实现吗?

共有1个答案

云弘壮
2023-03-14

如果一个bean是合格的,那么你需要通过它的接口用它的限定符注入bean,这就是CDI的工作原理。即使您使用实例,您也需要通过其限定符选择特定的实现,否则CDI如何知道您想要什么样的实现?它应该有资格是有原因的。否则,您只能迭代所有找到的实现。

如果可以使用类,那么直接注入实现类,那么就不需要限定符了。这是因为一个类总是唯一的,一个类不可能有多个实现,它是一个实现,除非类是抽象的。

阅读此文档以了解类型安全解决方案是如何工作的,也许它有助于澄清问题。

https://docs.jboss.org/weld/reference/latest/en-US/html/injection.html

 类似资料:
  • 我试图以编程方式查找并注入一个CDI托管bean,其中限定符包含一个类的名称(不是我想要注入的类),但是我遇到的问题是,我用来查找正确bean的代码总是返回。 我要注入的bean使用名为的自定义注释进行注释,该注释包含用作限定符的类的名称,bean还实现了名为的接口。我使用的类实现了接口。 基于我对CDI的有限了解,我认为为了以编程方式查找使用注释限定的正确bean,我需要扩展,然后我可以使用来选

  • 问题内容: 我想在Express / Node服务器上模拟404错误。我怎样才能做到这一点? 问题答案: 如今,响应对象上有专用的功能。在致电之前,只需将其拴在某个地方即可。

  • 问题内容: 我可以下载并安装一封来自PyPI Python模块严格意义上的脚本中,不使用外壳 在所有 ? 我使用非标准的Python环境,即Autodesk Maya的Python解释器。它不带有“ easy_install”,也没有“ shell”,只有主要Maya可执行文件调用的python脚本解释器。将ez_setup.py的内容复制并粘贴到脚本编辑器窗口中并正确运行,将easy_insta

  • 我研究了一下,我能找到的唯一答案是: > 如何禁止下拉通知栏。 如何使用以下方法取消通知: 我尝试了Android的Lollipop和牛轧糖,但通知栏都没有恢复。如果有人能告诉我这是不是可能的以及怎么做。多谢了。 生成通知的代码:

  • 问题内容: 尽管我看过很多类似的问题,但没有找到明确的答案。使用Servlet Spec 2.5,是否可以以编程方式添加Servlet过滤器和映射?首选位置在Servlet.init()或ServletContextListener.contextInitialized()中。 问题答案: 不,不是通过标准的Servlet 2.5 API。这是在Servlet 3.0 中引入的。最好的选择是创建一

  • 问题内容: 我的目的是为Java Source File中的方法以编程方式调用Eclipse命令。重命名这样的方法还应该将更改应用于使用/引用此方法的所有实例。 我相信JDT具有Refactoring API,但无法找到相同的任何文档或教程。 有人能指出我正确的方向吗? 编辑:运行时不需要更改。 问题答案: 我认为您最有前途的方法是使用Eclipse源代码。 下载带有源代码的所需版本。特别是,您需