@ -54,8 +54,8 @@ public interface ConfigurableApplicationContext extends ApplicationContext, Life
@@ -54,8 +54,8 @@ public interface ConfigurableApplicationContext extends ApplicationContext, Life
@ -197,7 +197,7 @@ public interface ConfigurableApplicationContext extends ApplicationContext, Life
@@ -197,7 +197,7 @@ public interface ConfigurableApplicationContext extends ApplicationContext, Life
@ -339,7 +339,7 @@ public abstract class AbstractReflectiveMBeanInfoAssembler extends AbstractMBean
@@ -339,7 +339,7 @@ public abstract class AbstractReflectiveMBeanInfoAssembler extends AbstractMBean
@ -48,7 +48,7 @@ public class CandidateComponentsTestClassLoader extends ClassLoader {
@@ -48,7 +48,7 @@ public class CandidateComponentsTestClassLoader extends ClassLoader {
@ -81,7 +81,7 @@ public class BeanFactoryDestinationResolver implements DestinationResolver, Bean
@@ -81,7 +81,7 @@ public class BeanFactoryDestinationResolver implements DestinationResolver, Bean
}
catch(BeansExceptionex){
thrownewDestinationResolutionException(
"Failed to look up Destinaton bean with name '"+destinationName+"'",ex);
"Failed to look up Destination bean with name '"+destinationName+"'",ex);
@ -95,7 +95,7 @@ public class PatternParseException extends IllegalArgumentException {
@@ -95,7 +95,7 @@ public class PatternParseException extends IllegalArgumentException {
publicenumPatternMessage{
MISSING_CLOSE_CAPTURE("Expected close capture character after variable name '}'"),
MISSING_OPEN_CAPTURE("Missing preceeding open capture character before variable name'{'"),
MISSING_OPEN_CAPTURE("Missing preceding open capture character before variable name'{'"),
ILLEGAL_NESTED_CAPTURE("Not allowed to nest variable captures"),
CANNOT_HAVE_ADJACENT_CAPTURES("Adjacent captures are not allowed"),
ILLEGAL_CHARACTER_AT_START_OF_CAPTURE_DESCRIPTOR("Char ''{0}'' not allowed at start of captured variable name"),
@ -105,7 +105,7 @@ public class PatternParseException extends IllegalArgumentException {
@@ -105,7 +105,7 @@ public class PatternParseException extends IllegalArgumentException {
MISSING_REGEX_CONSTRAINT("Missing regex constraint on capture"),
ILLEGAL_DOUBLE_CAPTURE("Not allowed to capture ''{0}'' twice in the same pattern"),
REGEX_PATTERN_SYNTAX_EXCEPTION("Exception occurred in regex pattern compilation"),
CAPTURE_ALL_IS_STANDALONE_CONSTRUCT("'{*...}' can only be preceeded by a path separator");
CAPTURE_ALL_IS_STANDALONE_CONSTRUCT("'{*...}' can only be preceded by a path separator");
@ -43,6 +43,8 @@ This is different from the JDK's `ByteBuffer`, which only exposes one position f
@@ -43,6 +43,8 @@ This is different from the JDK's `ByteBuffer`, which only exposes one position f
writing, and a separate `flip()` operation to switch between the two I/O operations.
In general, the following invariant holds for the read position, write position, and the capacity:
[literal]
[subs="verbatim,quotes"]
--
0 <= read position <= write position <= capacity
--
@ -94,7 +96,7 @@ In practice, this means that the reserved memory captured by the buffer will be
@@ -94,7 +96,7 @@ In practice, this means that the reserved memory captured by the buffer will be
the memory pool, ready to be used for future allocations.
In general, _the last component to access a `DataBuffer` is responsible for releasing it_.
Withing Spring, there are two sorts of components that release buffers: decoders and transports.
Within Spring, there are two sorts of components that release buffers: decoders and transports.
Decoders are responsible for transforming a stream of buffers into other types (see <<codecs>> below),
and transports are responsible for sending buffers across a network boundary, typically as an HTTP message.
This means that if you allocate data buffers for the purpose of putting them into an outbound HTTP
@ -165,7 +167,7 @@ Note that a decoder instance needs to consider <<databuffer-reference-counting,
@@ -165,7 +167,7 @@ Note that a decoder instance needs to consider <<databuffer-reference-counting,
Spring comes with a wide array of default codecs, capable of converting from/to `String`,
`ByteBuffer`, byte arrays, and also codecs that support marshalling libraries such as JAXB and
Jackson (with https://github.com/FasterXML/jackson-core/issues/57[Jackson 2.9+ support for non-blocking parsing]).
Withing the context of Spring WebFlux, codecs are used to convert the request body into a
Within the context of Spring WebFlux, codecs are used to convert the request body into a
`@RequestMapping` parameter, or to convert the return type into the response body that is sent back
to the client.
The default codecs are configured in the `WebFluxConfigurationSupport` class, and can easily be
@ -3870,7 +3870,7 @@ for optimal performance. See section on configuring <<mvc-config-static-resource
@@ -3870,7 +3870,7 @@ for optimal performance. See section on configuring <<mvc-config-static-resource
=== ETag Filter
The `ShallowEtagHeaderFilter` can be used to add "shallow" eTag values, computed from the
response content and thus saving bandwith but not CPU time. See <<filters-shallow-etag>>.
response content and thus saving bandwidth but not CPU time. See <<filters-shallow-etag>>.