@Qualifier(“unique_name”)在spring中用于在应用程序上下文中唯一标识bean不起作用?

时间:2011-06-01 23:25:38

标签: spring annotations singleton

我有以下情况:

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]  

我该如何解决这个问题?

谢谢

1 个答案:

答案 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>