webflux 中的 DefaultMultipartMessageReader 与 SynchronossPartHttpMessageReader

DefaultMultipartMessageReader vs SynchronossPartHttpMessageReader in webflux

在webflux中,我们有两种不同的读取多部分请求体的实现

DefaultMultipartMessageReader & SynchronossPartHttpMessageReader

我看到他们俩写的时候都用nio。因为我使用的是 netty(通过 reactor netty),所以即使从请求正文中读取也可以使用 nio

如果是,它们各自的用途是什么?

从 Spring Framework 5.2 开始,Spring WebFlux 确实附带了 2 个多部分 reader 实现。

在 Spring Framework 5.0 中,多部分 reader 实现依赖于第 3 方库(同步)以 non-blocking 方式读取多部分请求。但是这个实现不是完全反应式的,可以缓冲数据并将其作为临时文件写入磁盘。

spring-framework#21659 起,引入了新的 fully-reactive 实现,并且是新的默认实现。第一个实现仍然是开发人员的可能选择。