Базовый принцип реализации автоматической сборки Spring
Базовый принцип реализации автоматической сборки Spring основан на механизме отражения и контейнере IoC (инверсия управления).
Сначала Spring сканирует все bean-компоненты в контексте приложения, а затем устанавливает зависимости между bean-компонентами на основе аннотаций, файлов конфигурации или других метаданных.
Затем, когда контейнер IoC запускается, Spring будет использовать механизм отражения для создания этих bean-компонентов и автоматически внедрять их туда, где они необходимы. В частности, Spring будет использовать механизм отражения для вызова методов конструктора и установки компонента для реализации создания экземпляра компонента и назначения атрибутов.
@Autowired автоматическое подключение аннотаций
Используйте аннотацию @Autowired для автоматической сборки указанного компонента. При запуске Spring IoC контейнер автоматически загружает постпроцессор. Когда контейнер сканирует @Autowied, он автоматически находит необходимый компонент в контейнере IoC и внедряет объект. Атрибуты , при использовании @Autowired сначала запросите bean-компонент соответствующего типа в контейнере. Если результат запроса равен единице, соберите bean-компонент с данными, указанными @Autowired. Если результат запроса больше одного, то @Autowired будет собрать компонент по имени.Для поиска, если результат вышеуказанного поиска пуст, будет выдано исключение.Решение можно использовать require=false. Если вы используете @Resource, он будет ассемблироваться и внедряться в соответствии с именем по умолчанию. Только если bean-компонент, соответствующий имени, не может быть найден, он будет ассемблироваться и внедряться в соответствии с типом.
В Spring есть 5 режимов автоподключения.
- Настройка Spring по умолчанию, при которой автоматическая сборка отключена.
- byName: автоматическая сборка на основе имени компонента.
- byType: автоматическая сборка в зависимости от типа компонента.
- конструктор: автоматическая сборка в соответствии с типом параметра конструктора.
- autodetect: сначала он попытается найти подходящий конструктор с параметрами. Если он будет найден, он будет автоматически собран с конструктором. Если соответствующий конструктор не найден внутри компонента Bean или конструктор является конструктором без параметров, контейнер автоматически выберет режим по типу.