diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RequestProcessor.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RequestProcessor.java index eab28b93f..635bb2c60 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RequestProcessor.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RequestProcessor.java @@ -32,6 +32,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.reactivestreams.Publisher; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.cloud.function.context.catalog.FunctionInspector; import org.springframework.cloud.function.context.message.MessageUtils; import org.springframework.cloud.function.core.FluxWrapper; @@ -64,9 +65,9 @@ public class RequestProcessor { private final JsonMapper mapper; - public RequestProcessor(FunctionInspector inspector, JsonMapper mapper, + public RequestProcessor(FunctionInspector inspector, ObjectProvider mapper, StringConverter converter) { - this.mapper = mapper; + this.mapper = mapper.getIfAvailable(); this.inspector = inspector; this.converter = converter; } @@ -100,8 +101,8 @@ public class RequestProcessor { Class inputType = inspector.getInputType(function); Type itemType = getItemType(function); - Object input = null; - if (StringUtils.hasText(body)) { + Object input = body; + if (StringUtils.hasText(body) && this.mapper!=null) { if (body.startsWith("[")) { Class collectionType = Collection.class.isAssignableFrom(inputType) ? inputType : Collection.class; input = mapper.toObject(body, ResolvableType diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java index 7cc31e671..b36f69e5d 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java @@ -105,7 +105,7 @@ class FunctionEndpointInitializer context.getBeanFactory())); context.registerBean(RequestProcessor.class, () -> new RequestProcessor(context.getBean(FunctionInspector.class), - context.getBean(JsonMapper.class), + context.getBeanProvider(JsonMapper.class), context.getBean(StringConverter.class))); context.registerBean(FunctionEndpointFactory.class, () -> new FunctionEndpointFactory(context.getBean(FunctionCatalog.class),