Задать вопрос

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

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

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

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

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

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