Модуль 4. Starters и BOM: как не утонуть в зависимостях
Цель модуля
Научиться собирать проект на Spring Boot без dependency-хаоса и конфликтов версий.
Что разберём
- Что такое starter и зачем он нужен.
- Как работает dependency management через BOM.
- Как проверять и держать зависимости под контролем.
Шаг 1. Что такое starter
Starter - это согласованный набор библиотек под конкретный сценарий.
Примеры:
spring-boot-starter-webspring-boot-starter-data-jpaspring-boot-starter-securityspring-boot-starter-test
Шаг 2. Почему starter лучше ручного набора
- Меньше ручной работы.
- Совместимые версии из коробки.
- Ниже риск конфликтов на runtime.
Шаг 3. Практика: базовый Gradle-проект
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'org.postgresql:postgresql'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
Шаг 4. Что делает BOM Spring Boot
BOM фиксирует совместимые версии транзитивных библиотек. Поэтому в большинстве случаев не нужно вручную указывать версии для зависимостей из экосистемы Boot.
Шаг 5. Проверка дерева зависимостей
Полезно периодически запускать:
./gradlew dependencies
и смотреть, какие версии подтянулись фактически.
Частые ошибки
- Добавлять «на всякий случай» много starter'ов.
- Явно указывать версии там, где их уже управляет BOM.
- Не чистить неиспользуемые зависимости.
Мини-ДЗ
- Собери минимальный проект REST + JPA + PostgreSQL.
- Посмотри дерево зависимостей и выпиши 5 ключевых библиотек.
- Удали одну лишнюю зависимость и проверь, что функциональность сохранилась.
Чек-лист
- Понимаю разницу между starter и обычной библиотекой.
- Понимаю, зачем нужен BOM.
- Умею читать dependency tree.