@Qualifier ("unique_name") весной для уникальной идентификации компонента в контексте приложения не работает? - PullRequest
1 голос
/ 02 июня 2011

У меня есть следующий сценарий:

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 Ответ

1 голос
/ 29 июня 2011

@Qualifier не должен быть помещен в classB.Вместо этого это должно быть помещено вместе с autowired.Ваш класс должен выглядеть следующим образом:

Class MyClass {

  @AutoWired
  @Qualifier("unique_name")
  private B b;

  //...

}

Это означает, что вы сообщаете autowire b с типом B (тип B или A, потому что B является подклассом A), но с определением компонента, имеющим квалификаторуникальное имя".В 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...