Почему передача значений Autowired полей в качестве параметров метода базового класса — это антипаттерн?

Допустим есть сервисные классы(1), в которые инжектированы как поля - другие сервисные классы(2). Все сервисные классы 1 выполняют одно и то же действие, с помощью соответствующего(у каждого свой) сервисного класса 2. Было принято решение выделить это повторяющееся действие в метод базового класса сервисных классов 1, а также выделить соответствующий интерфейс, который должны реализовать все классы 2. Метод базового класса принимает на вход этот интерфейс, т.е. объект класса 2.

Коллеги считают такой подход антипаттерном, а именно - передачу инжектированных объектов в методы базового класса. Порыскав по интернету, ничего на этот счет не обнаружил. Хотелось бы услышать мнение со-стороны.
  • Вопрос задан
  • 298 просмотров
Пригласить эксперта
Ответы на вопрос 1
Правильно считают. Вы должны заинжектить через интерфейс объекта2 в базовом сервисном классе и там его использовать. А вот уже при объявлении бина сервисного класса указать что туда будет инжектиться.

обычно это делают через аннотацию @Required над сеттером нужного бин-поля
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы