Создаём Reactive RESTful Web Service на Spring WebFlux

Для начала неплохо бы понять, что такое реактивное программирование или Reactive Programming. Я прочёл кучу статей и пришёл к выводу:

Reactive Programming — это такая хипстерская и хайповая парадигма программирования, которая предполагает, что обработка данных происходит неблокирующими потоками.

Как и для Agile у нас есть манифест для реактивного программирования: https://www.reactivemanifesto.org.

Попробуем создать наш реактивный RESTful WEB Service на Spring 5. Переходим на Spring Initializr. Выбираем Maven Project, Java и Spring Boot 2. Затем в Dependencies прописываем зависимость Reactive Web.

Spring Initializr Reactive Web

Создаём обработчик HTTP-запроса:

Мы просто соединяем строки, переданные нам в параметрах str1 и str2. Тут всё просто и понятно.

Теперь нам нужно написать роутер, который будет связывать URL с нашим обработчиком:

Тут тоже всё довольно просто. Мы просто обрабатываем GET-запросы на «/concatenate» и возвращаем наш ConcatenateHandler.

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

Теперь запускаем наше Spring Boot приложение ReactiveWebExampleApplication.

Потом запускаем ConcatenateWebClient и в консоли видим результат:

Итог: Мы написали пример простого приложения на Spring WebFlux. Сейчас Spring WebFlux довольно активно продвигается.

Постулаты реактивного программирования, вроде как, вполне здравые:

  • отзывчивость;
  • отказоустойчивость;
  • гибкость;
  • основанность на модели асинхронной обработки событий.

Но пока я не увидел какого-либо действительно кардинального улучшения, из-за которого бы действительно стоило бросаться переписывать свои старые сервисы со Spring MVC на Spring WebFlux. Да и вообще, есть вероятность, что это очередная волна хайпа (очень похоже на волны хайпа с Groovy, Scala и Kotlin), которая вполне может стухнуть спустя какое-то время.

Если я что-то не понял, то можете изъяснить свою точку зрения в комментариях.

Исходный код проекта на GitHub.

Пока всё. Да прибудет с вами Сила.


Поделиться:
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован.

*