2010-01-04 2 views
6

Мы знаем весной, <bean> имеет атрибут «primary», указывающий, что bean - это первый кандидат, если есть несколько bean-компонентов, которые доступны для автообучения недвижимость.Могу ли я использовать аннотацию, чтобы указать, что bean является основным компонентом

Но теперь все определения моего bean объявляются с помощью @ Component/@ Service и т. Д. Я не могу найти соответствующий «первичный» атрибут, который я могу использовать для объявления компонента.

Пожалуйста, сообщите, как я могу достичь этого, спасибо.

ответ

22

В Spring 3.0 вы используете @Primary.

Указывает, что фасоль следует предпочтение при наличии нескольких кандидатов квалифицированы autowire в однозначную зависимость. Если ровно , один из «первичных» компонентов существует среди кандидатов , это будет значениедля автоувеличивания.

Может использоваться в любых классах напрямую или косвенно аннотируется компонентом или о методах, аннотированных компонентом Bean.

Использование Primary на уровне класса имеет никакого эффекта, если не используется компонентное сканирование . Если класс Primary-annotated объявлен через XML, первичные метаданные аннотации игнорируются, а : - .

См. ref docs.

+0

Спасибо, что я обновил до версии 3.0, теперь он отлично работает. – Matt

+0

похоже, что ваш ref doc умер. это может быть лучше: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html –

+0

@jb. спасибо, исправлено – skaffman

4

Аннотации @Primary будут работать только в том случае, если вы используете Spring 3.0.

Весной 2.5 нет эквивалентной аннотации для основного атрибута. Вы должны использовать аннотацию @Qualifier, чтобы указать, какой компонент вы хотите ввести. Другой вариант - определить вашу собственную аннотацию классификатора для той же цели.

Для получения дополнительной информации см. docs.