Приоритет автопроводки - PullRequest
4 голосов
/ 24 марта 2011
<beans default-autowire="byType" />

означает, что все поля bean-компонентов будут автоматически вставлены в зависимости, если не более 1 bean-компонента с требуемым типом.

Интересно, есть ли способ определить какой-либо порядок приоритетов (например, на основе соглашения об именовании) для автоматического подключения в случае, когда имеется более одного компонента требуемого типа.
Заранее спасибо.

Редактировать: Я просто хочу добавить, что мне не разрешено использовать аннотации, такие как @Component и @Qualifier, в проекте, над которым я сейчас работаю.

1 Ответ

2 голосов
/ 24 марта 2011

Нет, это не так, но вы можете переопределить это поведение по мере необходимости для каждого компонента, например, укажите где-то подобное:

<beans default-autowire="byType" >
    <bean id="..." autowire="byName">
        ....
    </bean>
</beans>

Начиная с пружины 2.5 и выше при использовании <context:component-scan/> для автоматической передачи бобов через @Autowired вы также можете добавить @Qualifier, где необходимо указать бин по имени, если есть несколько бобов одного типа.

Как указано в весенней документации , существует несколько различных способов задания автопроводки:

  • нет - не подключать автоматически, по умолчанию
  • byType - тип свойства должен совпадать с типом бина. Если существует более одного бина этого типа, возникает исключение
  • byName - имя бина должно совпадать с именем свойства
  • constructor - в основном то же, что byType, но для конструкторов, Spring выбирает конструктор с наибольшим количеством совпадений
  • автоопределение - так же, как byType, если нет конструктора по умолчанию, где он возвращается к автоинсталляции конструктора
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...