Новое в Spring 5.x

Spring

Spring 5.0 был первым крупным выпуском после выпуска Spring 4 в 2013 году и 5.0 M1, выпущенного 28 июля 2016 года. С медленным продвижением количество людей, использующих его, определенно увеличится, так какие же новые функции есть у Spring 5? Давайте взглянем

В основном его можно разделить на следующие категории:

  • Обновление версии JDK
  • Ревизия базовой платформы, обновление основного контейнера
  • Котлин функциональное программирование
  • модель реактивного программирования
  • Тестовые улучшения
  • Дополнительная поддержка библиотеки
  • Прекратить поддержку некоторых функций
Обновление версии JDK

Код Spring 5 основан на спецификации синтаксиса Java 8, поэтому для использования Spring 5 версия JDK должна быть не ниже 8.0 или выше. Вначале Spring 5.0 хотел использовать Java 9, но Java 9 была выпущена на 18 месяцев позже, чем Spring, а затем команда разработчиков Spring решила удалить зависимость Java 9 от Spring 5.0.

Основная редакция фреймворка

Основываясь на улучшении отражения Java8, параметры метода могут быть эффективно доступны в Spring5.

Базовый интерфейс Spring предоставляет реализацию интерфейса по умолчанию, которая использует Java 8, метод по умолчанию, который предоставляет некоторые необязательные объявления.

Аннотации @Nullable и @NotNull точно помечают параметры и возвращаемые значения метода, чтобы нулевые значения можно было обрабатывать во время компиляции без создания исключений NullPointerException во время выполнения.

Что касается ведения журнала, Spring 5.0 предоставляет модуль моста для общего ведения журнала, spring-jcl, который заменяет стандартное общее ведение журнала.Он также может автоматически обнаруживать Log4J2.x, SLF4J и JUL (java.util.logging) без необходимости дополнительные зависимости.

Котлин функциональное программирование

Spring 5.0 представляет поддержку языка JetBrains для Kotlin, объектно-ориентированного языка программирования, поддерживающего функциональное программирование. Kotlin также работает поверх JVM.Благодаря поддержке Kotlin разработчики могут использовать функциональное программирование Spring для обработки точек входа в сеть и регистрации bean-компонентов.

Например, вы можете написать следующий стиль кода.

В точке входа в сеть:

{
("/movie" and accept(TEXT_HTML)).nest {
GET("/", movieHandler::findAllView)
GET("/{card}", movieHandler::findOneView)
}
("/api/movie" and accept(APPLICATION_JSON)).nest {
GET("/", movieApiHandler::findAll)
GET("/{id}", movieApiHandler::findOne)
}
}

При регистрации бинов:

val context = GenericApplicationContext {
registerBean()
registerBean { Cinema(it.getBean()) }
}
модель реактивного программирования

Интересная особенность Spring 5.0 — реактивное веб-программирование.

Reactive Streams — это набор спецификаций, разработанный NetFlix, Pivotal, Typesafe, Red Hat, Oracle, Twitter и Spray.io. Он предоставляет некоторые общие API-интерфейсы, и реализацией можно управлять самостоятельно, точно так же, как JPA Hibernate, JPA — это API, а Hibernate — это реализация.

Reactive Streams — это официальный модуль в Java 9, но в Java 8 нам нужно ввести дополнительные зависимости. Потоковая поддержка Spring 5.0 для реактивных API-интерфейсов на основе потоковProject Reactor

В Spring 5.0 появился новый модуль spring-webflux, который поддерживает реактивные клиенты Http и WebSocket.

С помощью Spring Webflux вы можете создать Webclient, который является реактивной и неблокирующей альтернативой RestTemplate. Вот пример кода:

WebClient webClient = WebClient.create();
Mono person = webClient.get()
.uri("http://localhost:8080/movie/42")
.accept(MediaType.APPLICATION_JSON)
.exchange()
.then(response -> response.bodyToMono(Movie.class));
Тестовые улучшения

Spring 5.0 полностью поддерживает Junit 5, а во фреймворке TestContext тесты могут выполняться параллельно. Для реактивного программирования Spring-test предоставляет WebTestClient для тестирования spring-webflux. WebTestClient, как и MockMvc, не требует запуска сервера.

Конечно, Spring 5.0 по-прежнему поддерживает Junit 4, и Junit 4 будет существовать в будущем.

Дополнительная поддержка библиотеки

Spring 5.0 теперь поддерживает следующие версии библиотек:

Некоторые функции вне обслуживания

На уровне API Spring 5.0 больше не поддерживает следующие пакеты:

  • beans.factory.access
  • jdbc.support.nativejdbc
  • mock.staticmock для модуля весенних аспектов
  • web.view.tiles2M. Tiles 3 теперь является минимально необходимой версией
  • orm.hibernate3 и orm.hibernate4.Теперь поддерживает Hibernate5

Следующие библиотеки больше не поддерживаются:

  • Portlet
  • Velocity
  • JasperReports
  • XMLBeans
  • JDO
  • Guava

Если вы используете упомянутые выше библиотеки в своем текущем проекте, лучше не обновляться до версии Spring5.

резюме

Реактивное программирование становится все более популярным, и мы увидим, что все больше и больше технологий реализуют адаптивные решения.Те, кто интересуется реактивным программированием, могут узнать о нем больше.

Ссылаться на