diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultExchangeStrategiesBuilder.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultExchangeStrategiesBuilder.java index da77ecb4b58..c87695aaed7 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultExchangeStrategiesBuilder.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultExchangeStrategiesBuilder.java @@ -70,26 +70,38 @@ class DefaultExchangeStrategiesBuilder implements ExchangeStrategies.Builder { public void defaultConfiguration() { + defaultReaders(); + defaultWriters(); + } + + private void defaultReaders() { messageReader(new DecoderHttpMessageReader<>(new ByteArrayDecoder())); messageReader(new DecoderHttpMessageReader<>(new ByteBufferDecoder())); - if (jackson2Present) { - messageReader(new ServerSentEventHttpMessageReader(Collections.singletonList(new Jackson2JsonDecoder()))); + messageReader(new ServerSentEventHttpMessageReader(sseDecoders())); + messageReader(new DecoderHttpMessageReader<>(new StringDecoder(false))); + if (jaxb2Present) { + messageReader(new DecoderHttpMessageReader<>(new Jaxb2XmlDecoder())); } - else { - messageReader(new ServerSentEventHttpMessageReader(Collections.emptyList())); + if (jackson2Present) { + messageReader(new DecoderHttpMessageReader<>(new Jackson2JsonDecoder())); } - messageReader(new DecoderHttpMessageReader<>(new StringDecoder(false))); + } + + private List> sseDecoders() { + return jackson2Present ? Collections.singletonList(new Jackson2JsonDecoder()) : + Collections.emptyList(); + } + + private void defaultWriters() { messageWriter(new EncoderHttpMessageWriter<>(new ByteArrayEncoder())); messageWriter(new EncoderHttpMessageWriter<>(new ByteBufferEncoder())); messageWriter(new EncoderHttpMessageWriter<>(new CharSequenceEncoder())); messageWriter(new ResourceHttpMessageWriter()); messageWriter(new FormHttpMessageWriter()); if (jaxb2Present) { - messageReader(new DecoderHttpMessageReader<>(new Jaxb2XmlDecoder())); messageWriter(new EncoderHttpMessageWriter<>(new Jaxb2XmlEncoder())); } if (jackson2Present) { - messageReader(new DecoderHttpMessageReader<>(new Jackson2JsonDecoder())); messageWriter(new EncoderHttpMessageWriter<>(new Jackson2JsonEncoder())); } }