Получить доступ

Что такое 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

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

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Проблема без стартеров: для веб-приложения нужно подобрать версии 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
  • ✓Набор согласованных зависимостей, подключаемых одним пакетом
  • ✗Аннотация запуска приложения
  • ✗Профиль окружения

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

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

Разбор темы

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

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем