我已经使用 Weld 和 CDI 玩了几个月了,最近遇到了以下问题。
问题情况
- 使用 Weld SE 3.1.5.Final
- 创建了一个 CDI 扩展,它
SomeBean
使用添加了一个 bean ( )@Observes AfterBeanDiscovery abd
SomeBean
是具有ArrayList.class
as 类并返回 1 个限定符 (@CustomQualifier
) 的自定义 bean。- 一个不同的 bean (
DifferentBean
) 然后声明一个@Inject @CustomQualifier ArrayList<String> variableName;
- 此注入点因
Unsatisfied dependencies
.
调查
从 Bean Validation Report 我已经能够确定:
- Weld 创建 2 个 Bean 档案
- 和:
- 标识符:MyProject\build\classes\java\main
- 类型:全部
- Beans.xml:版本未定义。
- 和:
- 标识符:org.jboss.weld.environment.deployment.WeldDeployment.additionalClasses
- 类型:带注释的
- Beans.xml:没有 beans.xml
- 和:
- CDI 扩展是位于存档 1 中的 bean。
- 实例化的结果
DifferentBean
位于存档 1 中。- 这个豆子有:
- 种类:管理
- 班级:
my.package.DifferentBean
- 预选赛:
@Default
- 范围:
@Dependent
- 这个豆子有:
- 实例化的结果
SomeBean
位于存档 2 中。- 这个豆子有:
- 种类:合成
- 类:juArrayList
- 预选赛:
@CustomQualifier
- 范围:
@ApplicationScoped
- 这个豆子有:
原因
基于此,我假设由于某种原因,SomeBean
我的自定义扩展正在添加到存档 2,因此无法从存档 1 所在DifferentBean
的位置访问。
如果该评估是正确的,我该如何解决?