diff --git a/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java b/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java index 113266e5c6..a507098b44 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java @@ -46,12 +46,13 @@ import org.springframework.util.Assert; import org.springframework.util.MimeType; /** - * Abstract base class for Jackson JSON 2.9 decoding. + * Abstract base class for Jackson 2.9 decoding, leveraging non-blocking parsing. * * @author Sebastien Deleuze * @author Rossen Stoyanchev * @author Arjen Poutsma * @since 5.0 + * @see Add support for non-blocking ("async") JSON parsing */ public abstract class AbstractJackson2Decoder extends Jackson2CodecSupport implements HttpMessageDecoder { diff --git a/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java b/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java index 9ff6fae0ca..6c28dd1ea5 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java @@ -48,7 +48,9 @@ import org.springframework.util.Assert; import org.springframework.util.MimeType; /** - * Base class providing support methods for Jackson 2.9 encoding. + * Base class providing support methods for Jackson 2.9 encoding. For non-streaming use + * cases, {@link Flux} elements are collected into a {@link List} before serialization for + * performance reason. * * @author Sebastien Deleuze * @author Arjen Poutsma diff --git a/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonDecoder.java b/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonDecoder.java index 02aef7f52c..eba19bd743 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonDecoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonDecoder.java @@ -24,7 +24,8 @@ import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import org.springframework.util.MimeType; /** - * Decode a byte stream into JSON and convert to Object's with Jackson 2.9. + * Decode a byte stream into JSON and convert to Object's with Jackson 2.9, + * leveraging non-blocking parsing. * * @author Sebastien Deleuze * @author Rossen Stoyanchev diff --git a/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonEncoder.java b/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonEncoder.java index df462ef2cf..0945430287 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonEncoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonEncoder.java @@ -25,6 +25,7 @@ import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.databind.SerializationFeature; +import reactor.core.publisher.Flux; import org.springframework.core.ResolvableType; import org.springframework.http.MediaType; @@ -33,8 +34,9 @@ import org.springframework.lang.Nullable; import org.springframework.util.MimeType; /** - * Encode from an {@code Object} stream to a byte stream of JSON objects, - * using Jackson 2.9. + * Encode from an {@code Object} stream to a byte stream of JSON objects using Jackson 2.9. + * For non-streaming use cases, {@link Flux} elements are collected into a {@link List} + * before serialization for performance reason. * * @author Sebastien Deleuze * @author Arjen Poutsma diff --git a/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2SmileDecoder.java b/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2SmileDecoder.java index 7f561a0a93..d5a4cf1b38 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2SmileDecoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2SmileDecoder.java @@ -28,7 +28,8 @@ import org.springframework.util.Assert; import org.springframework.util.MimeType; /** - * Decode a byte stream into Smile and convert to Object's with Jackson 2.9. + * Decode a byte stream into Smile and convert to Object's with Jackson 2.9, + * leveraging non-blocking parsing. * * @author Sebastien Deleuze * @author Rossen Stoyanchev diff --git a/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2SmileEncoder.java b/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2SmileEncoder.java index d52bfaf8ef..1f5658848d 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2SmileEncoder.java +++ b/spring-web/src/main/java/org/springframework/http/codec/json/Jackson2SmileEncoder.java @@ -21,6 +21,7 @@ import java.util.List; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.smile.SmileFactory; +import reactor.core.publisher.Flux; import org.springframework.http.MediaType; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; @@ -29,6 +30,8 @@ import org.springframework.util.MimeType; /** * Encode from an {@code Object} stream to a byte stream of Smile objects using Jackson 2.9. + * For non-streaming use cases, {@link Flux} elements are collected into a {@link List} + * before serialization for performance reason. * * @author Sebastien Deleuze * @since 5.0 diff --git a/src/docs/asciidoc/core/core-databuffer-codec.adoc b/src/docs/asciidoc/core/core-databuffer-codec.adoc index ab7c0b1883..8caa524d0b 100644 --- a/src/docs/asciidoc/core/core-databuffer-codec.adoc +++ b/src/docs/asciidoc/core/core-databuffer-codec.adoc @@ -160,7 +160,7 @@ Note that a decoder instance needs to consider <