Что принёс Spring Framework 5
Историческая версия
Spring 5 важен для поддержки приложений поколения Spring Boot 2. Для новых систем обычно рассматривают поколение Spring 6 / Boot 3+, где baseline и пространство
jakarta.*другие.
Основные изменения пятой ветки
| Область | Изменение |
|---|---|
| Java baseline | Java 8 и активное использование default methods, lambdas, Optional |
| Reactive | Reactor 3 и контракт Reactive Streams |
| Web | Spring WebFlux рядом с Servlet-based Spring MVC |
| endpoints | annotation model и functional routing в WebFlux |
| Kotlin | first-class улучшения API и null-safety metadata |
| testing | интеграция TestContext с JUnit Jupiter |
| core | nullable/non-null annotations и обновлённые reflection/cache internals |
WebFlux не является «новой версией MVC». Это отдельный неблокирующий web stack. В одном приложении выбор определяется всей цепочкой: блокирующий JDBC-вызов внутри reactive handler не становится неблокирующим.
@Bean
RouterFunction<ServerResponse> routes(OrderHandler handler) {
return RouterFunctions.route()
.GET("/orders/{id}", handler::find)
.build();
}Что важно при чтении legacy-кода
- Spring 5 использует Java EE API пространства
javax.*; переход на Spring 6 требует Jakartajakarta.*; WebSecurityConfigurerAdapterотносится к старому стилю Spring Security и позже был заменён bean-based конфигурацией;WebMvcConfigurerAdapterпотерял смысл после default methods — реализуютWebMvcConfigurerнапрямую;- Spring Framework и Spring Boot имеют разные номера версий;
- Reactor не делает blocking dependency reactive.
Миграционная проверка
- Зафиксировать версии JDK, Spring Framework, Boot, Security и persistence API.
- Найти
javax.*, удалённые adapters и устаревшие конфигурации. - Обновлять совместимым набором, а не один случайный jar.
- Запустить integration tests для proxy, transactions, serialization и security.
На собеседовании
Главное web-нововведение Spring 5? WebFlux и reactive foundation на Reactor.
Заменил ли WebFlux MVC? Нет, оба стека существуют для разных моделей нагрузки.
Почему нельзя просто сменить Spring 5 на 6? Меняются baseline JDK, Jakarta namespace и совместимые поколения библиотек.
Станет ли JDBC неблокирующим в Mono? Нет.
Связано: Spring Reactor, Реактивное программирование Java, MVC, Spring Boot.