Назад к вопросам
Middle+
4
Какие подводные камни у setter injection?
Компании, где спрашивали
луция
Ответ от нейросети
sobes.tech AI
Setter injection имеет несколько подводных камней:
- Необязательность установки зависимости: если setter не вызван, объект может остаться в некорректном состоянии.
- Проблемы с неизменяемостью: объекты становятся изменяемыми после создания, что усложняет поток данных и тестирование.
- Порядок инициализации: сложно гарантировать, что все зависимости будут установлены до использования объекта.
Пример:
public class Service {
private Repository repo;
public void setRepository(Repository repo) {
this.repo = repo;
}
public void doWork() {
if (repo == null) {
throw new IllegalStateException("Repository not set");
}
repo.query();
}
}
Здесь, если setRepository не вызван, метод doWork упадет с ошибкой.