Что такое Spring Boot и зачем он нужен
Что проверяют
Отличаете ли вы Spring Boot от Spring Framework и понимаете ли, что именно он автоматизирует.
Как отвечать
Spring Boot это надстройка над Spring, которая убирает ручную настройку. Spring даёт контейнер и модули, Boot делает так, чтобы приложение поднималось без XML и без десятка конфигурационных классов.
Три вещи, ради которых он существует:
- автоконфигурация:
@EnableAutoConfigurationсмотрит, что лежит в classpath, и настраивает это сам. Есть драйвер и адрес базы, значит будетDataSource. Каждое такое решение отменяемо: свой бин того же типа побеждает; - стартеры:
spring-boot-starter-webэто согласованный набор зависимостей нужных версий вместо ручного подбора и конфликтов; - встроенный сервер: приложение это обычный jar с Tomcat внутри, запускается как java-процесс, а не разворачивается в контейнер сервлетов.
Плюс мелочи, которые в сумме экономят много: application.yml с профилями, @ConfigurationProperties для типизированных настроек, Actuator с проверками здоровья и метриками.
@SpringBootApplication это три аннотации сразу: конфигурация, автоконфигурация и сканирование компонентов в своём пакете и ниже.
Где спотыкаются
Говорят, что Boot это новая версия Spring. Это надстройка, Spring внутри тот же самый.
Не могут объяснить, как отключить лишнюю автоконфигурацию, хотя это exclude в аннотации.
Считают, что Boot генерирует код. Он ничего не генерирует, он настраивает бины по условиям.
Не знают, что Actuator по умолчанию отдаёт наружу больше, чем нужно, и это надо ограничивать.