CDI 模糊解析异常

CDI Ambiguous resolution exception

我有三个 class 定义如下。

class A {
}

class B extends A{
}

class C extends A{
}

class D{
//Inject class A
}

我在 class D 中注入 class A。CDI 抛出模糊解析异常。解决这个问题的正确方法是什么?感谢您的帮助。

您可以使用限定符,因此您的代码将如下所示:

@ClazzA
class A {
}

@ClazzB
class B extends A{
}

@ClassC
class C extends A{
}

当你尝试注入时,你会做这样的事情:

@Inject @ClassA
A a;

勾选Weld Doc

@Typed annotation enables restricting bean types 这样你就可以这样写:

class A {
}

@Typed(B.class)
class B extends A {
}

@Typed(C.class)
class C extends A {
}

class D {
//Inject class A
}

在您的部署中,bean class B(resp. C)的 beans types 将被限制为 BObject(分别为 CObject),这样只有一个 bean 的 bean 类型包含 A 类型,并且将解决不明确的解析。

请注意,@Typed 注释自 CDI 1.0 起可用。