Что делает аннотация @SpringBootApplication?
- Из чего состоит @SpringBootApplication?
Составная аннотация: @SpringBootConfiguration (по сути @Configuration), @EnableAutoConfiguration и @ComponentScan от пакета класса.
- Поэтому главный класс кладут в корневой пакет — иначе компоненты не найдутся
- exclude — исключить автоконфигурацию
- Запуск — SpringApplication.run(App.class, args)
А ещё scanBasePackages — сканировать другие пакеты
Подробно
Практически важна третья часть: сканирование идёт начиная с пакета аннотированного класса, поэтому классы, лежащие вне его дерева, просто не будут найдены — это самая частая причина ошибки «бин не найден» у новичков. Отсюда и соглашение размещать главный класс в корневом пакете приложения. Автоконфигурация подключает не всё подряд, а только то, что уместно при текущем наборе зависимостей и настроек.
Что хотят услышать
- Три составляющие.
- Значение расположения главного класса.
Частые ошибки
- Размещать главный класс в пакете, не покрывающем остальной код.
- Считать, что автоконфигурация включает все возможные компоненты.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Запускает встроенный веб-сервер и ничего больше
- ✗Помечает класс как точку входа для JVM вместо метода main, поэтому main не нужен
- ✓Объединяет @Configuration, автоконфигурацию и сканирование компонентов пакета
- ✗Подключает все стартеры, доступные в репозитории
Что спросят дальше
- Как автоконфигурация решает, что подключать?
- Как переопределить настройку, заданную автоконфигурацией?
Разбор темы
- Spring Boot: автоконфигурация и starters
@SpringBootApplication и starters, механизм автоконфигурации по условиям, переопределение через @ConditionalOnMissingBean, внешняя конфигурация и её приоритеты.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.