Что такое стартеры в Spring Boot и для чего они нужны
Что проверяют
Понимаете ли вы, что стартер это набор зависимостей и автоконфигурации, а не «библиотека, которая всё делает сама».
Как отвечать
Стартер это удобный набор зависимостей под задачу. Вместо десятка артефактов с ручным подбором совместимых версий подключается один:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>За этой строкой приезжают Spring MVC, Jackson, валидация и встроенный Tomcat, причём версии согласованы между собой родительским описанием зависимостей. Именно это снимает главную боль старого Spring, конфликт версий транзитивных зависимостей.
Второе, что даёт стартер: он приносит автоконфигурацию. Классы с условиями (@ConditionalOnClass, @ConditionalOnMissingBean) настраивают бины, если для этого есть всё нужное, и отступают, как только вы объявили свой бин того же типа.
Ходовые: web, data-jpa, security, validation, test, actuator. Свой стартер имеет смысл во внутренней платформе: общая конфигурация логирования, трассировки и клиентов раскладывается по сервисам одной зависимостью.
Где спотыкаются
Думают, что стартер это код фичи. Это зависимости плюс условная настройка.
Не знают, что автоконфигурация отступает перед своим бином, и лезут отключать её целиком.
Тянут starter-web в сервис без HTTP и получают лишний встроенный сервер.
Не могут объяснить, откуда берутся версии, хотя это spring-boot-dependencies.