Ранее мы уже изучили, как объявлять и связывать бины с помощью таких тегов, как <constructor-arg> и <property> в XML-файле.
Но Spring Framework позволяет нам осуществлять автоматическое связывание бинов (autowiring). Это позволяет нам существенно сократить объём кода в конфигурационном XML-файле, что особенно помогает при написании больших приложений.
Существует несколько режимов автоматического связывания в Spring:
(пусто)
Этот режим установлен по умолчанию и означает отсутствие автоматического связывания. Т.е. мы должны использовать прямую ссылку на бин для связывания. Такой способ мы уже рассматривали в статье внедрение зависимостей.
Используется автоматической связывание по имени бина. Контейнер Spring ищет в XML файле бин с указанным именем. И если находит бин с таким же именем – производит автоматическое связывание.
Автоматическое связывание по типу. В этом случае контейнер Spring ищет совпадение по типу. В случае, если он находит – происходит автоматическое связывание. Если в XML-файле определены несколько бинов с таким типом, то мы получаем исключение (exception).
constructor (ссылка на пример)
Здесь всё происходит так же, как и при использовании режима ‘byType’, с тем отличием, что поиск идёт по аргументам конструктора. Если в XML-файле находится несколько таких бинов – мы получаем ошибку (error).
autodetect
В этом режиме сначала происходит связывание в режиме ‘constructor’, а затем (если автосвязывание не произошло) в режиме ‘byType’.
Для более ясного понимания темы, настоятельно рекомендую ознакомиться с примерами приложений, указанными по ссылкам.
В этой статье мы ознакомились с основами автоматического связывания в Spring Framework.