Выбор ответа Junior Spring Boot и автоконфигурация обновлено

Сервисы не находятся

Вопрос

Класс приложения лежит в com.shop.app, сервисы в com.shop.service. Почему бины сервисов не создаются?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Сканирование идёт с пакета приложения вниз, сосед не входит. @ComponentScan без параметров берёт пакет аннотированного класса и все вложенные. com.shop.service соседний пакет, а не вложенный.

Варианты ответа

  1. Сервисы должны лежать в одном пакете с контроллерами и классом приложения
  2. Сканирование идёт с пакета приложения вниз, сосед не входитправильный ответ
  3. Сервисы нужно пометить @Bean вместо @Service
  4. Boot не сканирует пакеты, бины регистрируют вручную

Разбор

@ComponentScan без параметров берёт пакет аннотированного класса и все вложенные. com.shop.service соседний пакет, а не вложенный. Решение: перенести класс приложения в com.shop или указать scanBasePackages. @Bean ставят на методы, а не классы.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме