Spring vs Spring Boot

Тема дорожной карты · Spring Boot

Spring Framework и Spring Boot — фундаментальное различие для любого Java-разработчика: Spring Framework — это всеобъемлющий IoC-контейнер и модель программирования для создания корпоративных Java-приложений, тогда как Spring Boot — самоуверенный слой поверх него, обеспечивающий авто-конфигурацию, встроенные серверы и готовые к продакшену умолчания, позволяющие запускать приложения без XML и с минимальным шаблонным кодом. В одном лишь Spring Framework разработчики должны явно объявлять DispatcherServlet, настраивать бины DataSource, настраивать менеджеры транзакций и вручную согласовывать версии зависимостей — Spring Boot заменяет всё это @SpringBootApplication и стартовым POM, применяя разумные умолчания, которые по-прежнему переопределяемы через application.properties. Движок авто-конфигурации Spring Boot сканирует classpath и условно связывает бины с помощью @ConditionalOnClass, @ConditionalOnMissingBean и связанных аннотаций, поэтому добавление spring-boot-starter-data-jpa автоматически настраивает Hibernate, HikariCP и репозитории Spring Data JPA без единого явного определения бина. Spring Boot также добавляет эксклюзивные возможности, отсутствующие в самом Spring Framework: Spring Boot Actuator с интеграцией Micrometer и Prometheus, Spring Initializr для создания каркаса проектов, AOT-компиляцию GraalVM Native Image, слоистые сборки Docker-образов и Kubernetes-пробы работоспособности через /actuator/health/liveness и /actuator/health/readiness. Понимание различий между Spring Framework и Spring Boot проясняет, когда обращаться к низкоуровневым абстракциям Spring, таким как BeanFactory, ApplicationContext или AbstractSecurityInterceptor Spring Security, а когда полагаться на готовую к продакшену авто-конфигурацию Spring Boot для быстрой разработки сервисов.

Как это работает

Spring vs Spring Boot: Spring Framework — доминантный Java application-фреймворк; Spring Boot — opinionated, auto-configured слой поверх. Spring Boot 3.x (2026 LTS-линия) требует JDK 17+, поддерживает JDK 21 + 23, использует Jakarta EE (не javax). Starter POMs объединяют связанные зависимости (spring-boot-starter-web, -data-jpa, -security и т.п.). Spring Initializr (start.spring.io) генерирует project-skeletons. Auto-configuration сканирует classpath + связывает разумные дефолты.

Когда применять

Для новых Java-приложений — Spring Boot 3.x (LTS): широкая экосистема, простой onboarding, production-ready из коробки. Spring Initializr для bootstrap; не добавляйте 20 starters сразу — только нужное. Близко к дефолтам пока нет причины — каждая кастомизация = что-то для поддержки. Для не-Java JVM (Kotlin) Spring Boot поддерживает first-class.

Типичные ошибки

Ловушки Spring vs Spring Boot: новый проект на Spring Boot 2.x в 2026 (EOL — берите 3.x); путаница Spring + Spring Boot (Boot — auto-config-слой, не замена); пиньят JDK 8/11 навсегда (Spring 3.x требует 17); добавляют каждый starter "на всякий случай" (security surface + classpath bloat).

Связанные понятия

Полезные ресурсы

Проверить знания (1)

Загрузка вопросов…