java - Guice/CDI/JEE6 为什么instance.select(qualifiers)使用实例而不是MyQualifier.class的Annotation?

标签 java jakarta-ee guice cdi

假设你有这个注入(inject)点:

@Inject
private Instance<DeliveryEndpoint> allEndpoints;

并且您想选择一个用 @ActiveEndpoint 注释的端点子组>

allActiveEndpoints.select(new AnnotationLiteral<ActiveEndpoint>(){})

到底为什么 CDI 的创建者不只是这样做呢?

allActiveEndpoints.select(ActiveEndpoint.class)

那会容易得多...我觉得因为我不明白这一点,我最终可能会用我的代码做一些错误的事情。我错过了什么?

最佳答案

您的 ActiveEndpoint 是一个简单的限定符 - 没有参数。对于带有参数的限定符,这是行不通的。方法只能接受对象,限定符不是对象。

关于java - Guice/CDI/JEE6 为什么instance.select(qualifiers)使用实例而不是MyQualifier.class的Annotation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16599635/

相关文章:

java - 使用带有 AbstractThreadedSyncAdapter 的 RoboGuice 上下文注入(inject)

java - Web服务错误: 404 Not found - No context found for request

java - 我的闹钟应用程序不会显示闹钟通知或播放闹钟声音?

java - 部署在不同供应商的不同应用程序服务器中的 EJB 之间的通信

java - 当我尝试使用 Guice 覆盖通用绑定(bind)时,为什么会出现错误? (文字类型)

design-patterns - 自定义 Guice Scope,还是更好的方法?

java - Xuggle 将音频与生成的音频结合起来

Java如何将复杂的字符串存储到Map中

Java EE - 从类获取单元/节点信息

jakarta-ee - Resteasy @FormParam 总是返回 null