Назад к вопросам
Senior
3
Расскажи про способы инъекции зависимостей в Spring
Компании, где спрашивали
Octo
Ответ от нейросети
sobes.tech AI
В Spring существует несколько способов внедрения зависимостей (Dependency Injection):
- Через конструктор — зависимости передаются через параметры конструктора класса. Это самый рекомендуемый способ, так как позволяет делать поля
finalи облегчает тестирование.
@Component
public class Service {
private final Repository repository;
public Service(Repository repository) {
this.repository = repository;
}
}
- Через сеттеры (Setter Injection) — зависимости устанавливаются через методы-сеттеры. Используется, когда зависимость необязательна или может меняться.
@Component
public class Service {
private Repository repository;
@Autowired
public void setRepository(Repository repository) {
this.repository = repository;
}
}
- Через поля (Field Injection) — зависимости внедряются напрямую в поля с помощью аннотации
@Autowired. Менее предпочтительный способ, так как затрудняет тестирование и нарушает инкапсуляцию.
@Component
public class Service {
@Autowired
private Repository repository;
}
Каждый способ имеет свои плюсы и минусы, но конструкторный инъекшн считается лучшей практикой в современных приложениях на Spring.