Автопровод по умолчанию с @Component - PullRequest
1 голос
/ 25 октября 2011

У меня есть интерфейс его 2 реализации.Я аннотирую обе реализации @Component.Как я могу указать, что один из них будет компонентом по умолчанию, когда он будет использоваться для внедрения @Autowired по умолчанию.

Спасибо

Ответы [ 2 ]

2 голосов
/ 25 октября 2011

Используйте @Primary аннотацию к компоненту, который, по вашему мнению, имеет более высокий приоритет.

из документа

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

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

Использование Primary на уровне класса не имеет никакого эффекта, если не используется компонентное сканирование.Если первичный аннотированный класс объявлен с помощью XML, метаданные первичной аннотации игнорируются, и вместо них учитывается <bean primary="true|false"/>.

0 голосов
/ 25 октября 2011

Autowired работает "по типу", что означает, что он может автоматически подключаться, когда соответствует ровно один боб. Когда совпадает более одного компонента, используйте аннотации Autowired + Qualifier. Классификатор вызывает имя bean-компонента для автоматической передачи.

Это означает, что когда вы объявляете Компоненты, вам также необходимо присвоить им имена.

...