Sobes.tech
Назад к вопросам
Senior
6

Расскажи про принцип Dependency Injection и IoC в Spring.

Компании, где спрашивали
СБЕРСБЕР

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

sobes.tech AI

Dependency Injection (DI) — это паттерн, при котором зависимости объекта передаются ему извне, а не создаются внутри. Это облегчает тестирование, повышает модульность и управляемость кода.

Inversion of Control (IoC) — более общий принцип, означающий, что управление созданием и связыванием объектов передаётся внешнему контейнеру или фреймворку, а не реализуется вручную.

В Spring IoC контейнер отвечает за создание, конфигурацию и управление жизненным циклом бинов (объектов). DI реализуется через:

  • Конструкторную инъекцию — зависимости передаются через конструктор.
  • Сеттеры — зависимости устанавливаются через методы-сеттеры.
  • Поля с аннотациями (@Autowired) — Spring автоматически внедряет зависимости.

Пример:

@Component
public class Service {
    private final Repository repo;

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

Здесь Spring создаст экземпляр Repository и передаст его в конструктор Service. Это позволяет легко менять реализации зависимостей и упрощает тестирование.