Открытый проект Spring Boot 4.
Программа. Репозиторий
Spring Boot 4
Что нового
Spring Boot 4 и Spring Framework 7
Новый функционал кратко и доступно описан здесь:
Spring Boot 4 и Spring Framework 7: Ключевые фичи и изменения:
Дополнительно можно посмотреть:
Spring Boot 4
- «Модуляризация» автоконфигураций
- Поддержка JDK 17/25
- Совместимость с Jakarta EE 11
- Поддержка Kotlin 2.2
- Улучшенные Buildpacks и сборка Docker-образов, Интеграция Micrometer 2.x и OpenTelemetry
- Обновления Spring Boot CLI, новые эндпоинты в Actuator, улучшенное управление свойствами и профилями
- Spring Security 7, улучшенная интеграция с OAuth 2.2 и OIDC, улучшенная криптография
- Начальная поддержка интеграции со Spring AI, улучшенный API для “подсказок” GraalVM
Spring Framework 7
- API Versioning
- Null Safety with JSpecify
- Программный BeanRegistrar
- Поддержка Optional в SpEL
- @Retryable, @ConcurrencyLimit, @EnableResilientMethods
- Конфигурация HTTP-клиентов с помощью @ImportHttpServices
- Поддержка InputStream/OutputStream в HTTP-клиентах
- Новый JmsClient и улучшения в JdbcClient
- Централизованная конфигурация HTTP-конвертеров
- Новый RestTestClient для тестирования REST API
- Улучшенный PathPattern
- Удаленный и deprecation API
- Spring Boot 4.0 Release Notes
- Spring Boot 4.0.0 available now
- Spring Framework 7.0 Release Notes
- Spring Framework 7.0 General Availability
Java 25
Установите OpenJDK 25 (не забудте поменять SDK в Project Structure... и сделать
mvn clean + Refresh)
При запуске Maven не из IDEA нужно:
- или поменять
JAVA_HOME - или поправить переменные окружения в /apache-maven/bin/mvn[.cmd]
IntelliJ IDEA 2025.2
Обновить IDEA не обязательно, но в новой будет удобнее.
- Что нового (поддержка Java 25, Maven 4, JSpecify)
- Варианты работы с IDE
- Скачать (чз VPN или заменить download.jetbrains.com на download-cdn.jetbrains.com)
Работа с проектом
Работа с проектом будет выстроена аналогично остальным нашим курсам:
проект в Git репозитории (ветка boot4), патчи для изменения проекта, ветка с готовым кодом.
В мини-проекте всего 3 патча. Можно их применить по ходу занятий, а можно сразу вычекать ветку boot4patched и откатывать на нужную ревизию:
проект в Git репозитории (ветка boot4), патчи для изменения проекта, ветка с готовым кодом.
ВАРИАНТЫ
- По мере прохождения материала нужно будет последовательно применять в ветке master пронумерованные патчи (Apply patch). Патчи сделаны в JetBrains IDEA, лучше всего применять их в этой IDE или аналогах).
- После применения каждого патча следует делать коммит, чтобы было легче отслеживать изменения в git.
В этом случае клонируем начальный код Spring Boot 4: (ветка boot4) проекта bootjava:
git clone --branch boot4 https://github.com/JavaOPs/bootjava
ИЛИ
- Нужно склонировать ветку boot4patched c уже примененными патчами
- По мере прохождения материала откатывать проект (Checkout Revision) на нужное место
Ветка boot4patched с закоммиченными патчами:
git clone --branch boot4patched https://github.com/JavaOPs/cloudjava
Также можете настроить push проекта в свой Git
репозиторий
Проходя занятие вы смотрите проект - добавленный в него код, объяснения добавленного кода в занятии, запускаете и дебажите приложение.
Проходя занятие вы смотрите проект - добавленный в него код, объяснения добавленного кода в занятии, запускаете и дебажите приложение.
Миграция
В склонированном проекте (ветка boot4) разберем все изменения коммита Migrate to spring boot 4

Начнем с

Начнем с pom.xml
- В
propertiesобновляем java на 25 и поднимаем версии до последних в Maven Central Repository - В конфигурации Jackson обновилась зависимость jackson-datatype-hibernate для
для обнуления LAZY полей при сериализации в JSON (урок 7 курса BootJava).
Новый Spring Boot по умолчанию использует Jackson 3
(group ID и пакеты
изменились с
com.fasterxml.jacksonнаtools.jackson), однако Jackson 2 остается в зависимосяхspringdoc-openapi-starter-webmvc-ui, поэтому будьте аккуратны с импортами - не изменились только пакетыjackson-annotations. - Зависимость
findbugsдля удаления WARNING при компиляции больше не нужна. -
Spring Boot поменялась «модуляризация» автоконфигураций, см. Spring Boot 4. Новые модули. Зачем?
Для тестов нам понядобятся новые зависимости:spring-boot-starter-webmvc-test(stackoverflow) иspring-boot-starter-security-testвместоspring-security-test(stackoverflow) - Для обработки
lombokвannotationProcessor, теперь нужно его явно конфигурировать вmaven-compiler-plugin(раньше было достаточно иметь в зависимостях).
Зато вspring-boot-maven-pluginуже не надо исключать зависимостиoptionalиcompileвручную, чтобы они не попали в финальный jar - они исключаются автоматически.
Jackson 3
Кроме новой зависимости вpom.xml поменялось:
- Конфигурирование в
AppConfigтеперь делается черезJsonMapper.builder(), поэтому настройкиjackson.visibility(JSON сериализацию/десериализацию по полям) изapplication.yamlтакже делаем программно вAppConfig#objectMapper - В
JsonUtilпоменялись импорты иIOExceptionзаменил наJacksonException.
Прочие изменения
- Раньше было большое количество реализаций @NotNull annotation. В новых версиях принято использовать Null Safety with JSpecify. Подробнее здесь: Можно просто так взять и добавить поддержку проверки на Null
@Deprecated HttpStatus.UNPROCESSABLE_ENTITY / status().isUnprocessableEntity()заменили наHttpStatus.UNPROCESSABLE_CONTENT / status().isUnprocessableContent()- В
application.yamlнастройкиserver.servletпереместились вspring.servlet