首页 文章

Kotlin协程和Spring Framework 5反应型

提问于
浏览
4

Kotlin协程允许通过返回 Deferred 值来执行非阻塞代码 . 这对于在使用阻塞方法(例如来自库)时制作非阻塞代码非常有用 .

Spring 5允许在框架中使用 MonoFlux . 我看到的最大兴趣是能够序列化这两种类型的实例,并在有人调用控制器 endpoints 时将其作为响应发送回来 .

Spring 5的一个重点是对Kotlin(路由器,bean声明......)有一个特定的支持,但是我找不到关于Kotlin协同程序和Spring 5反应类型之间可能的相互作用的信息 .

有没有办法结合这些功能的优势?

  • Deferred 转换为 Mono / Flux

  • 具有 Deferred 作为Spring控制器方法的响应类型?

如果不是,在哪种情况下,如果我们有Spring 5反应类型,协程是否有意义?

1 回答

  • 11

    Coroutines为Spring Framework 5中使用的Reactor Core 3.1提供支持,自kotlinx.coroutines 0.19.1起 .

    Spring Framework 5 Coroutines支持目前正在进行中,作为spring-kotlin-coroutine社区项目中的一项实验 . 目前还没有计划在Spring Framework 5中集成这种支持,但是你可以关注并最终投票支持.1507248_ . 有关 FluxMono 如何适合Coroutines世界的问题,请参阅this comment .

    请记住,Coroutines仍然是实验性的,在决定是否正式支持它们之前,应该仔细评估优缺点 . 此外,桥接Reactive and Coroutines也有一些限制,特别是在背压支持方面(Coroutines早期触发需求并且只能执行 request(1) ) .

    在JVM方面,了解Project Loom将如何演变以及Reactive和Coroutines生态系统如何利用它也可能是一个好主意 .

相关问题