Что такое Spring Boot и зачем он нужен

Spring Boot — это надстройка над Spring Framework, которая превращает многодневную настройку Java-приложения в один запущенный класс с методом main.
Суть: Spring Boot берёт на себя рутину конфигурации (сервер, пулы соединений, сериализация JSON), чтобы вы писали бизнес-логику, а не XML-простыни.

Если вы открывали проект на чистом Spring десять лет назад, вы помните боль: десятки XML-файлов, ручная настройка сервлет-контейнера, версии библиотек, которые конфликтуют друг с другом. Чтобы поднять простой REST-эндпоинт, уходил целый день. Spring Boot появился именно как ответ на эту усталость. Его девиз — «convention over configuration», то есть разумные умолчания вместо ручной настройки каждой мелочи.

Сегодня Spring Boot — фактический индустриальный стандарт для бэкенда на Java. На нём работают банки, маркетплейсы, государственные сервисы. Когда в вакансии написано «Java-разработчик», в 90% случаев подразумевается именно Spring Boot. Поэтому освоить его — это прямой путь к коммерческой разработке.

Три кита Spring Boot

Первый кит — автоконфигурация. Boot смотрит, какие библиотеки лежат в classpath, и сам настраивает компоненты. Положили драйвер PostgreSQL и Spring Data JPA — Boot сам создаст пул соединений и EntityManager. Вам остаётся только указать адрес базы.

Второй кит — стартеры (starters). Это «наборы зависимостей под задачу». Вместо того чтобы вручную подбирать совместимые версии десяти библиотек, вы добавляете одну строку spring-boot-starter-web — и получаете весь стек для веба: встроенный Tomcat, Jackson для JSON, валидацию.

Третий кит — встроенный сервер. Раньше вы собирали WAR-файл и разворачивали его на отдельно установленном сервере приложений. Boot встраивает Tomcat прямо в приложение: вы запускаете обычный JAR командой java -jar app.jar — и сервер уже внутри.

# Запуск приложения Spring Boot — один JAR, сервер уже внутри
java -jar target/myapp-0.0.1-SNAPSHOT.jar

# Или через Maven во время разработки
./mvnw spring-boot:run

Как работает под капотом

Сердце Boot — аннотация @SpringBootApplication. Она объединяет три аннотации: @Configuration (класс может объявлять бины), @EnableAutoConfiguration (включить автонастройку) и @ComponentScan (искать компоненты в пакете и подпакетах). При старте запускается SpringApplication.run(), который поднимает контекст приложения — контейнер, где живут все объекты-бины.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

Современный Spring Boot — это версия 3.x, работающая на Java 17 или 21. Важная веха: в Boot 3 произошёл переход с пакетов javax.* на jakarta.* (об этом отдельный урок). Если видите в туториале javax.persistence — это устаревший Spring Boot 2.

Частые ошибки

  • Путать Spring и Spring Boot. Spring Framework — это ядро (внедрение зависимостей, MVC). Spring Boot — обёртка, которая автоматизирует его настройку. Boot не заменяет Spring, а упрощает его.
  • Искать сервер «снаружи». Новички ищут, куда установить Tomcat. В Boot сервер встроен — отдельно ставить ничего не нужно.
  • Класс с main вне корневого пакета. @ComponentScan сканирует пакет главного класса и ниже. Если положить компонент выше по дереву пакетов, Boot его не найдёт.

Best practices

  • Создавайте проект через start.spring.io (Spring Initializr) — он даёт корректные версии зависимостей.
  • Держите главный класс в корневом пакете проекта, чтобы сканирование захватило все компоненты.
  • Используйте свежий Boot 3.x и Java 21 LTS — это актуальный стек 2024–2025 годов.

Итог: Spring Boot — это «Spring без боли». Он берёт на себя конфигурацию, встраивает сервер и собирает зависимости в стартеры, оставляя вам только бизнес-логику. Дальше мы разберём, как устроен жизненный цикл запроса и из чего состоит приложение.

Закрепим главное

Чтобы по-настоящему почувствовать ценность Spring Boot, держите в голове сравнение «до и после». Раньше старт проекта означал ручную настройку сервлет-контейнера, подбор версий библиотек и десятки строк XML. Сегодня тот же результат достигается одним классом с main и парой строк в конфиге. Эта экономия времени умножается на каждый проект и каждого разработчика в команде — отсюда и доминирование Boot на рынке.

Ещё одна мысль на будущее: Spring Boot не прячет Spring, а лишь автоматизирует его настройку. Когда вам понадобится тонкая кастомизация, вы всегда сможете переопределить умолчания. Автоконфигурация устроена по принципу «conditional»: компонент создаётся, только если выполнены условия (есть нужная библиотека и нет вашего бина того же типа). Поэтому любой умолчательный бин можно заменить своим — Boot уступит вашему. Это сочетание «удобно из коробки, но всё под контролем» и делает фреймворк зрелым инструментом для продакшена, а не игрушкой для прототипов.

Проверьте себя
1. Что главным образом даёт Spring Boot поверх обычного Spring Framework?
AНовый язык программирования вместо Java
BАвтоконфигурацию, стартеры и встроенный сервер вместо ручной настройки
CСобственную базу данных
DЗамену JVM на свою виртуальную машину
2. Что объединяет в себе аннотация @SpringBootApplication?
A@Controller, @Service и @Repository
B@Configuration, @EnableAutoConfiguration и @ComponentScan
C@Entity, @Table и @Id
D@GetMapping, @PostMapping и @RequestBody