Вступить в клуб →
средняявопросSpring Boot и REST API

Циклическая зависимость двух сервисов при конструкторной инъекции

После рефакторинга приложение перестало стартовать: OrderService внедряет BillingService через конструктор, а BillingService — OrderService. Контейнер сообщает о циклической зависимости бинов.

Как правильно к этому отнестись?

  • Достаточно перейти на инъекцию в поле: контекст поднимется, приложение заработает, и вопрос можно закрыть
  • Цикл безопасен, контейнер разрешает его сам — надо лишь включить соответствующую настройку и больше к этому не возвращаться
  • Это симптом неверного разделения ответственности: общую логику стоит вынести в третий компонент или развязать сервисы событием
  • Убрать цикл можно только объединением обоих сервисов в один класс — других способов у Spring нет

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела