org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144的问题
由于在 Gateway 的自定义过滤器中重写了请求 ServerRequest,后面因为升级了架构,原本旧版本未对请求参数的大小进行限制(默认取-1),后面升级了新版修改为 256KB 的限制。
解决方案如下:
方案一跟二对于我当然版本的 SpringBoot 不生效,大家可以都尝试一下,有可能可以。
spring:
codec:
max-in-memory-size: 50MB
二、添加配置 Bean(失败)
@Configuration
@EnableWebFlux
public class WebFluxWebConfig implements WebFluxConfigurer
{
@Override
public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
configurer.defaultCodecs().maxInMemorySize(50 * 1024 * 1024);
}
}
三 手动设置配置类 (成功)
查询下代码中有没有使用默认reader的地方
HandlerStrategies.withDefaults().messageReaders()
修改如下:
@Autowired
private ServerCodecConfigurer codecConfigurer;
ServerRequest serverRequest = ServerRequest.create(exchange, codecConfigurer.getReaders());