CDI规范哪部分规定String类型Bean匹配String所需类型及匹配疑问
CDI规范中String类型Bean与注入点的匹配规则
问题
CDI规范的哪一部分规定了类型为java.lang.String的Bean与所需类型String相匹配?
规范中的类型匹配基础规则
CDI规范的「类型安全解析」章节定义了Bean可分配至注入点的核心条件:
Bean拥有与所需类型匹配的Bean类型。为此,原始类型被视为与其在java.lang中的对应包装类型匹配;数组类型仅在元素类型完全相同时视为匹配。参数化类型(parameterized type)与原始类型(raw type)若完全相同,或Bean类型可分配给所需类型(定义见「原始类型与参数化类型的可分配性」章节),则视为匹配。
针对String类型的匹配逻辑分析
对于java.lang.String这类类型:
- 它既不是原始类型、raw type,也不是参数化类型(parameterized type)
- 规范的上述描述看似未明确覆盖这类基础引用类型的匹配规则,但实际上CDI的隐含逻辑是将这类非参数化的普通引用类型纳入「类型完全相同即匹配」的范畴
- 作为CDI的参考实现,Weld的代码中直接将这类类型按raw type的匹配逻辑处理,即当Bean类型与所需类型完全相同时,判定为匹配。
内容的提问来源于stack exchange,提问作者Laird Nelson
相关产品推荐
相关产品推荐

