Вопрос с собеседования · Spring

Что делает аннотация @SpringBootApplication?

JuniorSpring Boot и ActuatorSpring Boot
Ещё спрашивают так:
  • Из чего состоит @SpringBootApplication?
Коротко

Составная аннотация: @SpringBootConfiguration (по сути @Configuration), @EnableAutoConfiguration и @ComponentScan от пакета класса.

  • Поэтому главный класс кладут в корневой пакет — иначе компоненты не найдутся
  • exclude — исключить автоконфигурацию
  • Запуск — SpringApplication.run(App.class, args)

А ещё scanBasePackages — сканировать другие пакеты

Подробно

Практически важна третья часть: сканирование идёт начиная с пакета аннотированного класса, поэтому классы, лежащие вне его дерева, просто не будут найдены — это самая частая причина ошибки «бин не найден» у новичков. Отсюда и соглашение размещать главный класс в корневом пакете приложения. Автоконфигурация подключает не всё подряд, а только то, что уместно при текущем наборе зависимостей и настроек.

Что хотят услышать

  • Три составляющие.
  • Значение расположения главного класса.

Частые ошибки

  • Размещать главный класс в пакете, не покрывающем остальной код.
  • Считать, что автоконфигурация включает все возможные компоненты.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Запускает встроенный веб-сервер и ничего больше
  • ✗Помечает класс как точку входа для JVM вместо метода main, поэтому main не нужен
  • ✓Объединяет @Configuration, автоконфигурацию и сканирование компонентов пакета
  • ✗Подключает все стартеры, доступные в репозитории

Что спросят дальше

  • Как автоконфигурация решает, что подключать?
  • Как переопределить настройку, заданную автоконфигурацией?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования