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

Что такое starter в Spring Boot?

JuniorSpring Boot и ActuatorSpring Boot
Ещё спрашивают так:
  • Зачем нужны spring-boot-starter зависимости?
Коротко

Стартер — зависимость-набор: подтягивает согласованные по версиям библиотеки для задачи, а автоконфигурация их подхватывает. spring-boot-starter-web — Spring MVC, Jackson, встроенный Tomcat.

  • Версии согласованы через spring-boot-dependencies (BOM) — свои версии писать не нужно
  • Стартер сам кода почти не содержит: польза — в зависимостях и автоконфигурации
  • Примеры: -data-jpa, -security, -actuator, -test, -validation

А ещё Свой стартер: модуль автоконфигурации + модуль-стартер с зависимостями

Подробно

Проблема без стартеров: для веб-приложения нужно подобрать версии Spring MVC, Jackson, сервлет-контейнера, валидатора — совместимые между собой. Ошибка в версии проявляется странными исключениями в рантайме.

Стартер — артефакт без своего кода, который тянет нужный набор библиотек. Версии берутся из BOM spring-boot-dependencies, который подключает parent spring-boot-starter-parent или плагин Gradle. Обновил версию Spring Boot — обновились все библиотеки согласованно.

Автоконфигурация реагирует на появившиеся классы: добавили spring-boot-starter-data-jpa — на classpath появились Hibernate и HikariCP, и Boot создаёт DataSource, EntityManagerFactory и менеджер транзакций.

Частые стартеры: -web (MVC и Tomcat), -webflux (реактивный стек и Netty), -data-jpa, -jdbc, -security, -validation, -actuator, -cache, -test (JUnit 5, Mockito, AssertJ, Spring Test).

Свой стартер для общих библиотек компании: модуль с классами @AutoConfiguration и файлом AutoConfiguration.imports, плюс модуль xxx-spring-boot-starter, который зависит от него и нужных библиотек.

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

  • Стартер как набор согласованных зависимостей.
  • Роль BOM и автоконфигурации.
  • Примеры и как устроен свой стартер.

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

  • Указывать вручную версии библиотек, которыми управляет Spring Boot.

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

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

Показать варианты и ответ
  • ✓Набор согласованных зависимостей одним пакетом
  • ✗Класс с методом main, который поднимает контекст
  • ✗Аннотация запуска приложения на встроенном сервере
  • ✗Профиль окружения со стандартными настройками Boot

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

  • Как starter связан с автоконфигурацией?
  • Можно ли сделать свой starter?

Разбор темы

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

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

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

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

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