From eedcceee203f16158fe7c3e9b25b61e7f05c39ae Mon Sep 17 00:00:00 2001 From: tooSun Date: Wed, 20 May 2020 04:06:36 +0800 Subject: [PATCH] Fix spring.codec.max-in-memory-size configuration is invalid for ReadBodyPredicateFactory. Fixes # 1658 (#1686) * Fix spring.codec.max-in-memory-size configuration is invalid for ReadBodyPredicateFactory. Co-authored-by: huangluob Fixes gh-1658 --- .../cloud/gateway/config/GatewayAutoConfiguration.java | 4 ++-- .../handler/predicate/ReadBodyPredicateFactory.java | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java index d1ef0917..c2a50f8e 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java @@ -394,8 +394,8 @@ public class GatewayAutoConfiguration { } @Bean - public ReadBodyPredicateFactory readBodyPredicateFactory() { - return new ReadBodyPredicateFactory(); + public ReadBodyPredicateFactory readBodyPredicateFactory(ServerCodecConfigurer codecConfigurer) { + return new ReadBodyPredicateFactory(codecConfigurer.getReaders()); } @Bean diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/handler/predicate/ReadBodyPredicateFactory.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/handler/predicate/ReadBodyPredicateFactory.java index 52f707f0..8c239024 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/handler/predicate/ReadBodyPredicateFactory.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/handler/predicate/ReadBodyPredicateFactory.java @@ -46,11 +46,16 @@ public class ReadBodyPredicateFactory private static final String CACHE_REQUEST_BODY_OBJECT_KEY = "cachedRequestBodyObject"; - private static final List> messageReaders = HandlerStrategies - .withDefaults().messageReaders(); + private final List> messageReaders; public ReadBodyPredicateFactory() { super(Config.class); + this.messageReaders = HandlerStrategies.withDefaults().messageReaders(); + } + + public ReadBodyPredicateFactory(List> messageReaders) { + super(Config.class); + this.messageReaders = messageReaders; } @Override