我有以下情况:
class A with "bean-a" in wireup.xml
class B extends A with "bean-b" in wireup.xml
自B is also A
以来,这意味着应用程序上下文中有多个类 A 的实例。
我想唯一地识别类 B 的单例实例,所以我用了
@Qualifier("unique_name") in class B
和
<qualifier value="unique_name"/> in "bean-b" of wireup.xml
但问题仍然存在,我收到消息:
No unique bean of type [A] is defined: expected single matching bean but found 2: [A, B]
我该如何解决这个问题?
谢谢
答案 0 :(得分:1)
@Qualifier不应该放在classB中。相反,它应该与自动装配一起使用。 你的课应该是这样的,
Class MyClass {
@AutoWired
@Qualifier("unique_name")
private B b;
//...
}
通过这种方式,你告诉autowire b类型为B(类型B或A,因为B是A的子类),但是bean定义具有限定符“unique_name”。 wireup.xml具有分配给bean-b的限定符标记。您的wireup.xml可能如下所示
<bean id="bean-A" class="com.domain.A" />
<bean id="bean-B" class="com.domain.B"
<qualifier="unique_name" />
</bean>