Какие подводные камни у setter injection?

Setter injection имеет несколько подводных камней:

Короткий ответ

Что ответить на собеседовании

Setter injection имеет несколько подводных камней:

Подробный разбор

Ответ с пояснениями

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 упадет с ошибкой.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее