1. Введение в Spring Boot: зависимости, автоконфигурация, запуск проекта
Введение в Spring Boot: зависимости, автоконфигурация, запуск проекта
Spring Boot — это надстройка над Spring, которая ускоряет создание приложений за счёт стартовых зависимостей, автоконфигурации и удобного запуска. В этом курсе мы будем разрабатывать REST-приложение от первых эндпоинтов до сборки и деплоя. Эта статья закладывает фундамент: как создаётся проект, что такое starters, как Spring Boot понимает, какие бины включать, и как всё это запустить.
Что именно делает Spring Boot
Spring Boot обычно решает три практические задачи:
main()-метод, встроенный сервер (например, Tomcat), упаковка в исполняемый jarВажно: Spring Boot не заменяет Spring и не отменяет понимание DI/IoC. Он делает типовые настройки по умолчанию, которые можно переопределять.
Создание проекта
Самый простой способ создать проект — через Spring Initializr.
Типичный набор для старта REST-приложения:
Если в курсе вы будете использовать базу данных, то позже добавятся зависимости вроде Spring Data JPA и драйвер (например, PostgreSQL).
Зависимости и стартеры
Что такое starter
Starter — это зависимость вида spring-boot-starter-*, которая подтягивает согласованный набор библиотек. Например:
spring-boot-starter-web подтягивает Spring MVC, Jackson для JSON и встроенный серверspring-boot-starter-test подтягивает JUnit, Spring Test и полезные библиотеки для тестированияПлюс стартеров в том, что вы не собираете вручную совместимые версии десятков библиотек.
Управление версиями: parent и BOM
Spring Boot управляет версиями транзитивных зависимостей через механизм dependency management.
spring-boot-starter-parentПрактический смысл: вы указываете версии редко, потому что Spring Boot уже задаёт совместимый набор.
Полезные источники:
Maven и Gradle: как это выглядит
| Что сравниваем | Maven | Gradle |
|---|---|---|
| Файл сборки | pom.xml | build.gradle или build.gradle.kts |
| Подход | Декларативный XML | DSL (Groovy/Kotlin) |
| Команда запуска | mvn spring-boot:run | ./gradlew bootRun |
| Сборка jar | mvn package | ./gradlew bootJar |
В рамках курса можно использовать любой инструмент — важнее понять принципы зависимостей и запуска.
Автоконфигурация Spring Boot
Идея автоконфигурации
Автоконфигурация — это набор конфигураций, которые Spring Boot подключает автоматически, если выполняются условия.
Упрощённая логика такая:
EntityManager и репозиторииПри этом Spring Boot старается не мешать, если вы явно задали настройку: ваши бины и настройки обычно имеют приоритет над дефолтными.
!Диаграмма показывает, как Spring Boot по зависимостям и условиям подключает нужные конфигурации.
@SpringBootApplication и что внутри
Точка входа в типичном приложении — класс с main() и аннотацией @SpringBootApplication.
Эта аннотация — композиция, которая в том числе:
@Controller, @Service, @Component и т.д.)Минимальный пример:
Важно: расположение этого класса в корневом пакете проекта влияет на сканирование компонентов. Обычно главный класс кладут в верхний пакет, например com.example.app, а остальные — в подпакеты.
Условные конфигурации
Автоконфигурации в Spring Boot подключаются по условиям. На концептуальном уровне чаще всего встречаются такие типы условий:
ObjectMapper, будет создан дефолтный)Практический вывод: если “вдруг что-то настроилось само”, почти всегда причина в том, что зависимость появилась в classpath, и условие автоконфигурации сработало.
Первый запуск проекта
Запуск из IDE
Обычно достаточно:
main() в классе с @SpringBootApplicationЕсли всё успешно, в логах будет видно, на каком порту поднялся сервер (по умолчанию 8080).
Запуск из командной строки
Для Maven:
Для Gradle:
Сборка исполняемого jar
Для Maven:
Для Gradle:
Исполняемый jar обычно уже содержит всё нужное, включая встроенный сервер.
Минимальный REST-эндпоинт для проверки
Чтобы убедиться, что веб-часть работает, добавим простой контроллер.
После запуска откройте в браузере или через curl:
Если вы получили строку Hello, Spring Boot, значит:
Конфигурация приложения: application.properties и application.yml
Spring Boot читает настройки из стандартных файлов конфигурации:
src/main/resources/application.propertiessrc/main/resources/application.ymlПример настройки порта:
Эквивалент в YAML:
Также часто используются профили (например, dev и prod), чтобы иметь разные настройки для локальной разработки и продакшена. К профилям мы вернёмся позже, когда будем готовить приложение к деплою.
Типичные проблемы на старте
server.port или освобождайте 8080@SpringBootApplicationЧто дальше по курсу
Дальше мы будем расширять приложение: