Стартеры
Стартер (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-web | REST API, MVC |
spring-boot-starter-data-jpa | JPA/Hibernate |
spring-boot-starter-security | аутентификация/авторизация |
spring-boot-starter-test | JUnit, Mockito, тестовые утилиты |
spring-boot-starter-validation | @Valid, проверка входных данных |
Зачем именно стартеры, а не просто подключать каждую библиотеку отдельно. Без стартеров пришлось бы вручную искать совместимые версии Spring MVC, Jackson, валидатора и т.д. — несовпадение версий часто ломает приложение труднообъяснимыми ошибками. Стартер гарантирует, что все библиотеки внутри него протестированы вместе и совместимы — команда Spring берёт эту головную боль на себя.
• почему стартеры решают проблему несовместимых версий библиотек (если дошёл до 2-го слоя).