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 将被限制为 B
和 Object
(分别为 C
和 Object
),这样只有一个 bean 的 bean 类型包含 A
类型,并且将解决不明确的解析。
请注意,@Typed
注释自 CDI 1.0 起可用。
我有三个 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 将被限制为 B
和 Object
(分别为 C
和 Object
),这样只有一个 bean 的 bean 类型包含 A
类型,并且将解决不明确的解析。
请注意,@Typed
注释自 CDI 1.0 起可用。