Пружинная фасоль
В Spring Framework вы можете автоматически подключать компоненты с помощью функции автоматического подключения. Чтобы включить его, просто определите атрибут «autowire» в
Весной поддерживается 5 режимов автопроводки.
-
нет - по умолчанию, автоматическое подключение отсутствует, установите его вручную с помощью атрибута «ref»
-
byName - Автоматическое подключение по имени свойства. Если имя компонента совпадает с именем другого свойства компонента, автоматически подключите его.
-
byType - автоматическое подключение по типу данных свойства. Если тип данных bean-компонента совместим с типом данных другого свойства bean-компонента, автоматически подключите его.
-
constructor - режим byType в аргументе конструктора.
-
autodetect - если найден конструктор по умолчанию, используйте «autowired by constructor»; В противном случае используйте «autowire by type».
Примеры
Объект Customer и Person для демонстрации автоматической разводки.
package com.example.common; public class Customer { private Person person; public Customer(Person person) { this.person = person; } public void setPerson(Person person) { this.person = person; } //... }
package com.example.common; public class Person { //... }
1. Авто-проводка "нет"
Это режим по умолчанию, вам нужно связать ваш компонент с помощью атрибута 'ref'.
2. Авто-проводка "byName"
Автоматически подключать бин по имени свойства. В этом случае, поскольку имя bean-компонента «person» совпадает с именем свойства bean-компонента «customer» («person»), Spring автоматически подключит его через метод установки - «setPerson(Person person)
».
См. Полный пример -Spring Autowiring by Name.
3. Авто-проводка "byType"
Автоматически подключать бин по типу данных свойства. В этом случае, поскольку тип данных bean-компонента «person» совпадает с типом данных свойства bean-компонента «customer» (объект Person), Spring автоматически подключит его через метод установки - «setPerson(Person person)
».
См. Полный пример -Spring Autowiring by Type.
4. Авто-проводка "конструктор"
Автоматически подключать бин по типу данных свойства в аргументе конструктора. В этом случае, поскольку тип данных bean-компонента «person» совпадает с типом данных аргумента конструктора в свойстве bean-компонента «customer» (объект Person), Spring автоматически подключил его через метод конструктора - «public Customer(Person person)
».
См. Полный пример -Spring Autowiring by Constructor.
5. Auto-Wiring ‘autodetect’
Если найден конструктор по умолчанию, используется «конструктор»; В противном случае используется «byType». В этом случае, поскольку в классе «Клиент» есть конструктор по умолчанию, Spring автоматически подключил его через метод конструктора - «public Customer(Person person)
».
См. Полный пример -Spring Autowiring by AutoDetect.
Note
Всегда хорошо комбинировать и «автоматическое подключение», и «проверку зависимости», чтобы убедиться, что свойство всегда успешно подключается автоматически.
Заключение
На мой взгляд, Spring "auto-wiring" ускоряет разработку с большими затратами - это усложняет весь файл конфигурации bean-компонента, и вы даже не знаете, какой bean-компонент будет автоматически подключен к bean-компоненту.
На практике я лучше подключаю его вручную, он всегда чистый и работает идеально, или лучше использует@Autowired annotation, что более гибко и рекомендуется.