Kotlin协程和Spring Framework 5反应类型
Kotlin协程允许通过返回Deferred
值来执行非阻塞代码。 这对于在使用阻塞方法(例如从库)中生成非阻塞代码非常有用。
Spring 5允许在框架中使用Mono
和Flux
。 我所看到的最大兴趣是能够序列化这两种类型的实例,并在有人呼叫控制器端点时作为响应发回。
Spring 5的一个重要特点是对Kotlin(路由器,bean声明,…)有特定的支持,但是我找不到有关Kotlin协同程序和Spring 5反应类型之间可能的相互作用的信息。
有什么办法可以将这些功能的优点结合起来吗?
- 将
Deferred
转换为Mono
/Flux
? - 有一个
Deferred
作为响应类型的Spring控制器方法?
如果否,那么在这种情况下,如果我们有Spring 5反应类型,那么协程是否有意义呢?
从kotlinx.coroutines 0.19.1开始,协程为Spring Framework 5中使用的Reactor Core 3.1提供了支持。
Spring框架5协程支持目前正在进行中,作为spring-kotlin-coroutine社区项目的一个实验。 这样的支持还没有计划在本地进行Spring Framework 5的集成,但是可以使用SPR-15413并最终投票。 有关Flux
和Mono
如何适应Coroutines世界的问题,请参阅此评论 。
请记住,协程仍然是试验性的,在决定正式支持它们之前,应仔细评估正反两面。 另外Bridging Reactive和Coroutine也有一些限制,特别是在反压支持方面(Coroutines提前触发需求,只能执行request(1)
)。
在JVM方面,看看Project Loom将如何发展以及Reactive和Coroutines生态系统如何利用它也可能是一个好主意。
- 在Kotlin中使用@Service时引发异常
- Kotlin无法在类中使用@Configuration @EnableWebMvc注释创建@Autowired字段
- 从Java 6迁移到Kotlin
- 弹簧5反应堆 – 每1秒发射一次物品
- Spring Web Flux(反应式)功能路由与Kotlin无法正常工作
- 异步春季启动使用Kotlin无法正常工作
- IntelliJ Idea for Kotlin @ConfigurationProperties类中不生成spring-configuration-metadata.json文件
- Spring @PostConstruct取决于@Profile
- 使用Spring HATEOAS ControllerLinkBuilder和Kotlin抛出IllegalArgumentException