Здравствуйте! Продолжаю серию миграций на новые версии фреймворков.
В прошлый раз это был JUnit 5 за 10 мин., в этот раз будет Spring 5.
Когда говорят о новом в Spring 5, в основном начинают говорить про реактивный стек, опуская достаточно много того нового, что в нем появилось помимо него. Реактивных драйверов к базам данных совсем немного, поэтому мой видеообзор про остальные важные обновления, надеюсь, будет актуально для большинства пользователей Spring. Кроме того, вместе со Spring 5.x обновляются и все его зависимости: spring-data 2.x, spring-security 5.x. В январе этого года наш учебный проект Spring 5/JPA Enterprise (Topjava) мигрировал со Spring 4.3.x на Spring 5. Процесс прошел достаточно легко и в конце небольшого видео на 10 минут я также приведу все изменения в коде проекта.
Новое в Spring 5
- Используется JDK 8+ (Optional, CompletableFuture, Time API, java.util.function, default methods)
- Поддержка Java 9 (Automatic-Module-Name in 5.0, module-info in 6.0+, ASM 6)
- Поддержка HTTP/2 (TLS, Push), NIO/NIO.2, Kotlin
-
Прочие изменения
- Null-safety аннотации(
@Nullable
), новая документация - Component index at compilation time (alternative to classpath scanning)
- Совместимость с Java EE 8 (Servlet 4.0, Bean Validation 2.0, JPA 2.2, JSON Binding API 1.0)
- Новый common logging bridge —
spring-jcl
- Поддержка JUnit 5 + Testing Improvements (conditional and concurrent)
- Удалена поддержка: Portlet, Velocity, JasperReports, XMLBeans, JDO, Guava
- Null-safety аннотации(
- Spring-Data-JPA 2.x, Spring-Security 5.x
- Реактивность (Web on Reactive Stack)
Ресурсы
- The State of Java in 2018, Java in 2017 Survey
- Spring Framework Wiki
- Spring Framework 5.0 on JDK 8 & 9 — Juergen Hoeller
Реактивность
- Spring 5 uses Reactor 3
- Reactor 3 project
- Разница между RxJava и API Java 9 Flow API
- Web on Reactive Stack
- Пример на Spring WebFlux
- New in Spring 5: Functional Web Framework
Миграция TopJava
В сентябре этого года уже выходит Spring 5.1, не отстаньте от прогресса релизов.
Спасибо за внимание!
Автор: gkislin