我第一次在Spring WebFlux应用程序中注意到这个错误:org.springframework.core.io.buffer.DataBufferLimitException:超出缓冲区最大字节数限制:262144所以WebFlux有一个限制,它在反序列化客户端负载时会检查,如文档中所述。我很想知道为什么在Spring Web MVC中不进行此检查。是最新的WebFlux的创新,还是有技术原因?
but5z9lq1#
WebFlux的一个特性是它能够将传入的请求作为流处理(这在Spring MVC中是不可用的)。这意味着输入请求的流可能是无限的,从而导致可能的“内存不足”问题。这就是为什么WebFlux的Decorer s和HttpMessageReader s通过它们的maxInMemorySize属性提供了一个有用的特性。Thay可以计算传入块的大小,并在累积大小超过指定限制时触发DataBufferLimitException。其实施的原因可以追溯到原始问题,可以在以下位置找到:https://github.com/spring-projects/spring-framework/issues/23884代码可在此处获得:https://github.com/spring-projects/spring-framework/commit/871464811cc1b18d684408f71725cead20c70796
Decorer
HttpMessageReader
maxInMemorySize
DataBufferLimitException
1条答案
按热度按时间but5z9lq1#
WebFlux的一个特性是它能够将传入的请求作为流处理(这在Spring MVC中是不可用的)。这意味着输入请求的流可能是无限的,从而导致可能的“内存不足”问题。这就是为什么WebFlux的
Decorer
s和HttpMessageReader
s通过它们的maxInMemorySize
属性提供了一个有用的特性。Thay可以计算传入块的大小,并在累积大小超过指定限制时触发DataBufferLimitException
。其实施的原因可以追溯到原始问题,可以在以下位置找到:https://github.com/spring-projects/spring-framework/issues/23884
代码可在此处获得:https://github.com/spring-projects/spring-framework/commit/871464811cc1b18d684408f71725cead20c70796