Sobes.tech
Middle+
43

Ի՞նչ են setter injection-ի թակարդները։

Ընկերությունները, որտեղ հարցրել են
луция

Պատասխան AI-ից

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