Учебники

Весна — Бобы Авто-проводка

Вы узнали, как объявлять компоненты с помощью элемента <bean> и внедрять элементы <bean> с помощью элементов <constructor-arg> и <property> в файле конфигурации XML.

Контейнер Spring может автоматически связывать отношения между взаимодействующими компонентами без использования элементов <constructor-arg> и <property>, что помогает сократить объем XML-конфигурации, которую вы пишете для большого приложения на основе Spring.

Режимы автопроводки

Ниже приведены режимы автоматического подключения, которые можно использовать для указания контейнеру Spring использовать автоматическое подключение для внедрения зависимости. Вы используете атрибут autowire элемента <bean />, чтобы указать режим autowire для определения bean-компонента.

Sr.No Режим и описание
1 нет

Это настройка по умолчанию, которая означает отсутствие автоматического подключения, и вы должны использовать явную ссылку на компонент для подключения. Вам нечего делать специально для этой проводки. Это то, что вы уже видели в главе «Внедрение зависимостей».

2 по имени

Автопроводка по названию свойства. Контейнер Spring просматривает свойства bean-компонентов, для которых для атрибута autowire установлено значение byName в файле конфигурации XML. Затем он пытается сопоставить и связать свои свойства с bean-компонентами, определенными теми же именами в файле конфигурации.

3 ByType

Автопроводка по типу собственности. Контейнер Spring просматривает свойства bean-компонентов, для которых для атрибута autowire установлено значение byType в файле конфигурации XML. Затем он пытается сопоставить и связать свойство, если его тип соответствует точно одному из имен bean-компонентов в файле конфигурации. Если существует несколько таких бобов, возникает фатальное исключение.

4 конструктор

Аналогичен byType, но тип применяется к аргументам конструктора. Если в контейнере нет точно одного компонента с аргументом конструктора, возникает фатальная ошибка.

5 автоматическое распознавание

Spring сначала пытается подключиться с помощью autowire через конструктор , если он не работает, Spring пытается выполнить autowire by byType .

Это настройка по умолчанию, которая означает отсутствие автоматического подключения, и вы должны использовать явную ссылку на компонент для подключения. Вам нечего делать специально для этой проводки. Это то, что вы уже видели в главе «Внедрение зависимостей».

Автопроводка по названию свойства. Контейнер Spring просматривает свойства bean-компонентов, для которых для атрибута autowire установлено значение byName в файле конфигурации XML. Затем он пытается сопоставить и связать свои свойства с bean-компонентами, определенными теми же именами в файле конфигурации.

Автопроводка по типу собственности. Контейнер Spring просматривает свойства bean-компонентов, для которых для атрибута autowire установлено значение byType в файле конфигурации XML. Затем он пытается сопоставить и связать свойство, если его тип соответствует точно одному из имен bean-компонентов в файле конфигурации. Если существует несколько таких бобов, возникает фатальное исключение.

Аналогичен byType, но тип применяется к аргументам конструктора. Если в контейнере нет точно одного компонента с аргументом конструктора, возникает фатальная ошибка.

Spring сначала пытается подключиться с помощью autowire через конструктор , если он не работает, Spring пытается выполнить autowire by byType .

Вы можете использовать ByType или режим автоматического подключения конструктора для подключения массивов и других типизированных коллекций.

Ограничения с автопроводкой

Автопроводка работает лучше всего, когда она используется последовательно в проекте. Если автопроводка не используется в целом, разработчикам может быть неудобно использовать ее для привязки только одного или двух определений компонента. Хотя автоматическая разводка может значительно снизить потребность в указании свойств или аргументов конструктора, но вы должны учитывать ограничения и недостатки автоподсоединения перед их использованием.

Превосходящая возможность

Вы по-прежнему можете указывать зависимости, используя настройки <constructor-arg> и <property>, которые всегда переопределяют автопроводку.

Примитивные типы данных

Вы не можете автоматически связывать так называемые простые свойства, такие как примитивы, строки и классы.

Запутанная природа

Автопроводка менее точна, чем явная, поэтому, если возможно, предпочтительнее использовать явную проводку.