Сопрограммы Kotlin и реактивные типы Spring Framework 5

Сопрограммы Kotlin позволяют выполнять неблокирующий код, возвращая значение Deferred. Это действительно полезно для создания неблокирующего кода при использовании методов блокировки (например, из библиотеки).

Spring 5 позволяет использовать Mono и Flux во фреймворке. Большой интерес, который я вижу, - это возможность сериализовать экземпляры этих двух типов и отправлять их обратно в качестве ответа, когда кто-то вызывает конечную точку контроллера.

Одним из важных моментов Spring 5 является наличие специальной поддержки Kotlin (маршрутизатор, объявление bean-компонента, ...), но я не могу найти информацию о возможных взаимодействиях между сопрограммами Kotlin и реактивными типами Spring 5.

Есть ли способ объединить преимущества этих функций?

  • преобразование Deferred в _5 _ / _ 6_?
  • имея Deferred в качестве типа ответа методов контроллера Spring?

Если нет, то в каких случаях сопрограммы имеют смысл, если у нас есть реактивные типы Spring 5?


person Bastien7    schedule 11.10.2017    source источник


Ответы (1)


Начиная с версии 5.2 (все еще в разработке) Spring Framework предоставляет официальную поддержку сопрограмм. Я написал подробный блог сообщение, в котором объясняется, как типы Mono и Flux сопоставляются с функциями приостановки, Deferred и типами Kotlin Flow. Вы также можете найти более подробную информацию в раздел сопрограмм справочной документации Spring Framework 5.2.

person Sébastien Deleuze    schedule 11.10.2017
comment
Спасибо за быстрый и хороший ответ! Я попробую поддержку Reactor Core в kotlinx.coroutines и проверю Projet Loom. - person Bastien7; 11.10.2017
comment
Я обновил свой ответ сообщением в блоге и документацией об официальной поддержке сопрограмм Spring, которая будет доступна в Spring Framework 5.2. - person Sébastien Deleuze; 03.05.2019