Что такое starter в Spring 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?
Разбор темы
- Spring Boot: автоконфигурация и starters
@SpringBootApplication и starters, механизм автоконфигурации по условиям, переопределение через @ConditionalOnMissingBean, внешняя конфигурация и её приоритеты.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.