Миграция с Spring Boot 3.x на 4.0 и с Java 21 на Java 25 - не апокалипсис, но и не рядовое обновление зависимостей. Сергей Прощаев, Tech Lead в FinTech и преподаватель курсов по Java-разработке, разобрал, как превратить потенциальный двухмесячный пожар в управляемую инженерную процедуру.
Почему откладывать дороже, чем действовать
Spring Boot 3.4 лишился публичных security-патчей ещё 31 декабря 2025 года. Boot 3.5 продержится чуть дольше, но его open-source поддержка истекает в июне 2026-го. Дальше - замороженная ветка без исправлений уязвимостей. Для команд в финансовом секторе это не технический долг в привычном смысле: это риск, который рано или поздно всплывёт на аудите. Прощаев вспоминает, как однажды отложенный апгрейд обернулся тремя накопившимися CVE в транзитивных зависимостях и авралом под давлением службы безопасности. Плановая миграция по чек-листу и паника под дедлайн - принципиально разные ситуации. смотреть Швейцария - Канада на RUTUBE Спорт
Фундамент Boot 4 шире, чем кажется
Spring Boot 4.0 вышел в ноябре 2025 года. Под капотом - Spring Framework 7, Jakarta EE 11, Hibernate ORM 7.1, Spring Security 7, Jackson 3 и JUnit 6. Обновляется не один фреймворк, а полтора десятка библиотек разом. Формальный минимум рантайма - Java 17, но команда Spring даёт полноценную поддержку Java 25 LTS, которая вышла в сентябре 2025-го. Застревать на 21-й без веских причин смысла нет.
Маршрут: два вектора, ни разу не вместе
Ключевой принцип всего подхода - не менять JDK и Spring одним прыжком. Регрессию нужно уметь локализовать. Прощаев предлагает чёткую последовательность шагов.
- Обновиться до последней 3.5.x и зачистить все deprecation-предупреждения - это предохранитель перед прыжком.
- Прогнать OpenRewrite с рецептом UpgradeSpringBoot_4_0, после чего обязательно вычитать дифф глазами: автоматика не понимает контекст бизнес-логики.
- Перейти на Boot 4.0.x - но всё ещё на Java 21. Самый широкий по радиусу шаг делается на знакомом рантайме.
- Только убедившись в зелёном CI - отдельным шагом поднять JDK до Java 25.
Без зелёного покрытия тестами двигаться нельзя в принципе. Контрактные тесты API, интеграционные сценарии с базой, проверки сериализации JSON, сценарии авторизации - всё это должно существовать до старта. Миграция без тестов - лотерея, а не инженерия.
Где чаще всего рвётся
Boot 4 ломает тихо. Код компилируется, а падает уже в рантайме. Основные точки риска собраны в таблицу.
| Что меняется | Симптом | Что проверять |
|---|---|---|
| Jackson 3 | Пакеты переехали с com.fasterxml.jackson на tools.jackson, ломается кастомная сериализация | Кастомные сериализаторы и контрактные тесты API |
| Spring Security 7 | Изменённые дефолты CSRF молча ломают браузерные сценарии | Настройки CSRF при наличии браузерных клиентов |
В Boot 4 удалено около 36 deprecated-классов - порядка 88% устаревших API из веток 2.x и 3.x. Именно поэтому промежуточная остановка на 3.5 так важна: компилятор заранее подсвечивает всё, что в 4.0 уже вырезано. Прошли через 3.5 с чистыми варнингами - переход на 4.0 читается по понятным ошибкам, а не как гадание на кофейной гуще. Это и есть разница между управляемой процедурой и пожаром.