Пружинная фасоль

Пружинная фасоль

В 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, что более гибко и рекомендуется.