Назад к вопросам
СБЕР
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. Это позволяет легко менять реализации зависимостей и упрощает тестирование.