- PVSM.RU - https://www.pvsm.ru -

Пять вещей, которые нужно знать о Spring Framework 5

На этой неделе, сразу за релизом Java 9 [1] вышла новая мажорная версия одного из самых популярных фреймворков для разработки приложения на Java — Spring Framework версии 5 [2]. Под катом подробности и краткое описание, что же поменялось.

Поддержка Java 9

Как и следовало ожидать, новый Spring вполне комфортно себя чувствует, работая на новой версии Java. Это означает, что новая версия Spring будет работать как включенная в classpath, так и в module path (используя automatic modules [3]). Сборка и все тесты самого фреймворка работают на новой JDK9 (хотя по умолчанию все еще используют JDK8).

Реактивность

Новая версия фреймворка добавляет новый проект в копилку Spring — Spring Reactive Web Framework или WebFlux. Это полностью асихронный и неблокирующий веб-фреймоворк предназначенный для работы поверх event loop, как альтернативу традиционным сервлетам работающих поверх классического пула потоков.

Более того, т.к. новый реактивный веб это не развитие, а скорее параллельное направление с Spring MVC, он позволяет работать вне контейнеров сервлетов и даже создавать минималистичные microframework-like приложения [4] — используя функциональный подход с WebFlux.fn.

Поддержка Kotlin

Kotlin теперь не только официально поддерживаемый Google [5] язык для разработки на Andriod, но и официально поддерживаемый Spring-ом язык для backend разработки.

Поддержка Kotlin включает сразу несколько аспектов:

  • Функциональный Kotlin DSL для описания компонентов приложения (бинов) и роутов WebFlux
  • Поддержка Kotlin Script в качестве view engine, используя ScriptTemplateView
  • Поддержка иммутабельных классов, опциональных параметров, значений по умолчанию, и многое другое
  • Возможность создать новый проект с использованием Spring Initializr [6] на Kotlin

Факт, чтобы оценить масштаб и серьезность — кода на Kotlin в ядре Spring уже больше, чем на Groovy.

Новая документация

Официальная документация [7] была реструктурирована и разбита на небольшие модули, сгруппированные по функциональности.

Прочие изменения

Их достаточно много, но можно выделить несколько ключевых:

  • Null-safety используя JSR-305 [8] аннотации. С этими аннтоациями умеет работать Kotlin, и инструменты анализа кода Java (например, IDEA их понимает, так же как и FindBugs)
  • Совместимость с Java EE 8 — Servlet 4.0, Bean Validation 2.0, JPA 2.2, JSON Binding API 1.0, Tomcat 9.0, Hibernate Validator 6.0
  • Функциональная регистрация компонентов (бинов) или WebFlux.fn — теперь DI можно конфигурировать не только через аннотации и XML, но и просто кодом, обращаясь напрямую к application context
  • Новый common logging bridge — spring-jcl (который автоматом умеет работать с Log4j 2.x, SLF4J, java.util.logging)
  • Улучшения в тестовом фреймворке — поддержка JUnit 5, параллельное выполнение тестов

Заключение

В общем, изменений очень много, новый фреймворк результат нескольких лет работы над проектом. Попробовать новый Spring 5 можно используя либо Spring Boot 2.0 build snapshot либо версию M5 которая выйдет на следующей неделе. Финальная версия Spring Boot 2.0 ожидается ближе к концу этого года.

Полезные ссылки:

Автор: alek_sys

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/264686

Ссылки в тексте:

[1] Java 9: https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-C23AFD78-C777-460B-8ACE-58BE5EA681F6

[2] версии 5: https://spring.io/blog/2017/09/28/spring-framework-5-0-goes-ga

[3] automatic modules: http://openjdk.java.net/projects/jigsaw/spec/sotms/#automatic-modules

[4] минималистичные microframework-like приложения: https://habrahabr.ru/post/337604/

[5] официально поддерживаемый Google: https://www.theverge.com/2017/5/17/15654988/google-jet-brains-kotlin-programming-language-android-development-io-2017

[6] Spring Initializr: https://start.spring.io

[7] Официальная документация: https://docs.spring.io/spring/docs/current/spring-framework-reference/

[8] JSR-305: https://jcp.org/en/jsr/detail?id=305

[9] Руководство по обновлению: https://github.com/spring-projects/spring-framework/wiki/Migrating-to-Spring-Framework-5.x

[10] Источник: https://habrahabr.ru/post/339016/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best