Sobes.tech
Назад к вопросам
Junior — Middle
106

Как осуществляется внедрение зависимостей в Bean при их обнаружении в контексте Spring или аналогичных фреймворков?

Компании, где спрашивали
МеталлИнвестБанк

Ответ от нейросети

sobes.tech AI

В Spring внедрение зависимостей (Dependency Injection, DI) в Bean происходит автоматически при обнаружении компонентов в контексте приложения. Основные способы внедрения:

  1. Через конструктор — зависимости передаются через параметры конструктора. Spring при создании Bean подставляет нужные объекты.

  2. Через сеттеры (Setter Injection) — зависимости устанавливаются через методы-сеттеры, помеченные аннотацией @Autowired.

  3. Через поля (Field Injection) — поля класса помечаются аннотацией @Autowired, и Spring подставляет нужные объекты напрямую.

Пример внедрения через конструктор:

@Component
public class Service {
    private final Repository repository;

    @Autowired
    public Service(Repository repository) {
        this.repository = repository;
    }
}

При запуске Spring сканирует классы с аннотациями @Component, @Service, @Repository и создает их экземпляры, автоматически разрешая зависимости по типу из контекста. Если несколько кандидатов, можно использовать @Qualifier для уточнения.

Таким образом, внедрение зависимостей происходит за счет контейнера Spring, который управляет жизненным циклом Bean и их связями.