Карта / Spring Boot / Стартеры

Стартеры

Стартер (starter) — готовый набор зависимостей под конкретную задачу, подключаешь одну строку в pom.xml вместо того, чтобы вручную подбирать совместимые версии десятка библиотек.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>   <!-- веб + REST -->
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>   <!-- JPA/Hibernate -->
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>   <!-- Spring Security -->
</dependency>

spring-boot-starter-web сам тянет Spring MVC, встроенный Tomcat, Jackson для JSON — всё, что обычно нужно для REST API, одним подключением (см. тему «Зависимости» про транзитивные зависимости в целом).

Копнуть глубже

Частые стартеры:

СтартерДля чего
spring-boot-starter-webREST API, MVC
spring-boot-starter-data-jpaJPA/Hibernate
spring-boot-starter-securityаутентификация/авторизация
spring-boot-starter-testJUnit, Mockito, тестовые утилиты
spring-boot-starter-validation@Valid, проверка входных данных

Зачем именно стартеры, а не просто подключать каждую библиотеку отдельно. Без стартеров пришлось бы вручную искать совместимые версии Spring MVC, Jackson, валидатора и т.д. — несовпадение версий часто ломает приложение труднообъяснимыми ошибками. Стартер гарантирует, что все библиотеки внутри него протестированы вместе и совместимы — команда Spring берёт эту головную боль на себя.

🎤 Закрыл тему, если можешь объяснить:
• что такое стартер и зачем он нужен;
• почему стартеры решают проблему несовместимых версий библиотек (если дошёл до 2-го слоя).