CDI:@alternative vs @Qualifiers

art*_*hur 9 java dependency-injection cdi

作为CDI的新手,我想知道替代品和限定符之间的实际区别.

Weld参考文献中,它声明:

4.3.限定符注释

如果我们有多个实现特定bean类型的bean,则注入点可以使用限定符注释准确指定应注入哪个bean.

但在解释替代品时,据说:

4.7.备择方案

替代方案是bean,其实现特定于特定客户端模块或部署方案.

如果我理解正确,@ Qualifier定义了目标bean的哪些实现被注入到注入点.

另一方面,@ Alternative描述了在部署期间依赖于客户关于标准的Alternatice(我的意思是"@default")是否被注入注入点的愿望.

这是正确的 ?

jan*_*oth 4

恩,那就对了。您可以将限定符想象为您在开发时使用源代码中的注释设置的基本编织。

替代方案允许您在执行时使用文件覆盖它beans.xml- 一个简单的部署工件。

典型的场景是针对beans.xml不同的环境使用不同的组件,从而为您不想在本地/集成环境中执行的组件启用模拟替代方案。