CDI模糊解决方案异常

时间:2015-03-03 19:21:31

标签: java-ee cdi

我有三个类定义如下。

class A {
}

class B extends A{
}

class C extends A{
}

class D{
//Inject class A
}

我在D类注入A类.CDI正在抛出不明确的解决方案异常。解决这个问题的正确方法是什么?感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

@Typed注释启用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类B的{​​{3}}(分别为C)将被限制为BObject(resp。{{ 1}}和C)这样只有一个bean的bean类型包含类型Object,并且将解析模糊的解析。

请注意,自CDI 1.0以来A注释可用。

答案 1 :(得分:2)

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

@ClazzA
class A {
}

@ClazzB
class B extends A{
}

@ClassC
class C extends A{
}

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

@Inject @ClassA
A a;

检查Weld Doc