Sobes.tech
Назад к вопросам
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 упадет с ошибкой.