Bug
- [SPR-15780] - Precondition failed for PUT methods on ResponseEntity return types
- [SPR-16488] - Deadlock in SubProtocolWebSocketHandler on shutdown with Undertow
- [SPR-16489] - EL1072E when evaluating compiled null-safe expression
- [SPR-16521] - JSON with missing quote leads to hanging
- [SPR-16524] - [Reactor Netty] Incorrect error level logging for client bad request
- [SPR-16526] - StringIndexOutOfBoundsException when rewriting links in CSS resources
- [SPR-16528] - Spurious ERROR-level logging when using SSEEmitter
- [SPR-16529] - GsonHttpMessageConverter cannot be used in an SseEmitter because it closes the response stream
- [SPR-16534] - testBindInstantFromJavaUtilDate fails on systems in the Pacific/Auckland time zone
- [SPR-16543] - WebApplicationContextFacesELResolver#isReadOnly always return false
- [SPR-16544] - SpEL : Indexed access within an expression with null variables is no longer a SpelEvaluationException
- [SPR-16545] - StackOverflowError when using WebFlux multipart file data handler with Undertow
- [SPR-16546] - FilePart transferTo fails with java.nio.file.NoSuchFileException
- [SPR-16551] - HiddenHttpMethodFilter breaks HandlerFunction with BodyExtractors.toFormData
- [SPR-16555] - ChannelSendOperator.WriteBarrier readyToWrite has race condition
- [SPR-16556] - PostgresTableMetaDataProvider.isGetGeneratedKeysSimulated() does not detect Postgres 10
- [SPR-16559] - Missing PersistenceException cause message in refresh failure warn log
- [SPR-16564] - Reading annotations in ConfigurationClassParser does not fall back to ASM on Google App Engine
- [SPR-16570] - Inconsistent synchronization in AbstractBeanFactoryBasedTargetSource and JdbcAccessor
- [SPR-16571] - WebAsyncManager concurrentResult should be volatile
- [SPR-16572] - TransactionTemplate inherits equals()/hashCode() from DefaultTransactionDefinition
- [SPR-16577] - SimpleAliasRegistry registerAlias not atomic
- [SPR-16581] - URIEditor should not double escape classpath: URIs
- [SPR-16582] - RestTemplate with HttpComponentsClientHttpRequestFactory and no buffering with an interceptor throws UnsupportedOperationException
- [SPR-16584] - Inconsistent handling of null values through Java 8 accessors in ConcurrentReferenceHashMap
- [SPR-16591] - ServletHttpHandlerAdapter @WebServlet annotation attributes do not conform to servlet spec
- [SPR-16597] - WebFlux commitActions are called after status, headers and cookies are set
- [SPR-16599] - AcceptHeaderLocaleResolver chooses wrong Locale for language match
- [SPR-16606] - ResourceDecoder incorrectly matches to Object.class
- [SPR-16611] - CallMetaDataContext.reconcileParameters doesn't catch output parameters with DatabaseMetaData.procedureColumnResult type (on Postgres)
- [SPR-16620] - Consistent thread-safe iteration in DefaultSingletonBeanRegistry
- [SPR-16625] - FactoryBeanRegistrySupport atomicity issues
- [SPR-16627] - Address race condition within spring that causes about-to-be-created-bean exceptions
- [SPR-16630] - An error occurs if a blank character exists before and after the delimiter of the MIME type parameter.
- [SPR-16636] - WebClient retrieve() does not handle Void.class as recommended
- [SPR-16640] - Multipart Upload with Commons Fileupload on lazy mode downloads data on cleanup
- [SPR-16648] - Concurrent result may be missed due to a race condition in MockMvc
- [SPR-16650] - ServletUriComponentsBuilder should replace context path when X-Forwarded-Prefix is present
- [SPR-16652] - Annotation lookup on parameter in inner class constructor fails when using javac from JDK versions prior to 9
- [SPR-16653] - Cannot autowire individual constructor argument in @Nested test class
- [SPR-16660] - UriComponentsBuilder Forwarded header parsing can throw java.lang.NumberFormatException
- [SPR-16663] - NamedParameterUtils.parseSqlStatement should parse :{x} style parameter correctly
- [SPR-16669] - Unable to bind a null value for UUID column with PostgreSQL
- [SPR-16670] - JndiRmiServiceExporter fails to export service on IBM j9 JDK
- [SPR-16671] - SimpleMailMessage's handling of to/cc/bcc arrays is inconsistent
Task
- [SPR-7885] - Clarify that RestTemplate registers an AllEncompassingFormHttpMessageConverter by default
- [SPR-16390] - Compatibility with JDK 10
- [SPR-16394] - [docs] Add WebFlux content on exception handling
- [SPR-16494] - [docs] Document the need for periodic writes on a streaming response
- [SPR-16538] - [docs] Document threading model in Spring WebFlux
- [SPR-16547] - [docs] Restructure chapter Functional Endpoints chpater
- [SPR-16549] - Incorrect pointcut expressions in reference documentation
- [SPR-16552] - Incorrect description for class-level @Transactional with AspectJ
- [SPR-16563] - Document that @PropertySource and @TestPropertySource do not support YAML
- [SPR-16592] - Doc: @PropertySource meta-annotation not detected next to direct annotation
- [SPR-16602] - Doc: @Scope not inherited from base class
- [SPR-16612] - [docs] disarranged table in section View Technologies / Freemarker
- [SPR-16616] - Clean duplicate slash and backslash in resource URLs
- [SPR-16658] - Incorrect Javadocs for ReflectionUtils.doWithLocalFields
- [SPR-16686] - Upgrade to AspectJ 1.9 GA
Improvement
- [SPR-12452] - Spring Websockets Broker relay supporting a cluster of STOMP endpoint addresses
- [SPR-13919] - Add support for asserting JSON in ContentRequestMatchers, just as there is for XML
- [SPR-14694] - Support BufferingClientHttpRequestFactory in MockRestServiceServer
- [SPR-16050] - Customize PreparedStatementCreatorFactory in getPreparedStatementCreator
- [SPR-16516] - SSE writer does not allow customizing the charset
- [SPR-16519] - Headers adding ability in ACK/NACK frame
- [SPR-16520] - Unable to register @RestControllerAdvice Class via WebTestClient
- [SPR-16523] - Consistent use of Collection.toArray with zero-sized array argument
- [SPR-16535] - Support for ResolvableType.getType().getTypeName() on Java 8
- [SPR-16536] - DefaultMessageListenerContainer should interrupt worker threads when not returning on shutdown
- [SPR-16537] - Need ability to access URI template in WebClient metrics/tracing instrumentation
- [SPR-16539] - Jackson Encoder(s) ignore charset in MimeType
- [SPR-16542] - EncoderHttpMessageWriter never sets Content-Length
- [SPR-16548] - Improve docs and handling of send errors in ResponseBodyEmitter
- [SPR-16553] - Provide simple way to create ClientResponse
- [SPR-16558] - Consistent incrementer arrangement for PostgreSQL, DB2 and SAP HANA
- [SPR-16562] - Overloaded convenience setters on HttpHeaders
- [SPR-16567] - Support @ResponseStatus-annotated exceptions on WebFlux
- [SPR-16568] - Consider caching interface-derived BeanInfo instances in CachedIntrospectionResults
- [SPR-16587] - MockMvcResultMatchers.jsonPath(String).value() should have a matching method to declare the expected type
- [SPR-16588] - Support for SimpleEvaluationContext in SpEL
- [SPR-16589] - Support for grouped DeferredImportSelector
- [SPR-16596] - Consistent volatile access to running flag in Lifecycle implementations
- [SPR-16601] - CodecException: No suitable writer found for part
- [SPR-16607] - ThreadPoolTaskExecutor should cancel all remaining Future handles on shutdown
- [SPR-16613] - Allow to make FormHttpMessageConverter add the charset in the Content-Type header
- [SPR-16624] - Update ContentNegotiationStrategy to never return an empty List
- [SPR-16626] - STOMP broker relay only allows up to 15 client connections
- [SPR-16628] - When @DependsOn throws a NoSuchBeanDefinitionException it should include the dependent bean for clarity
- [SPR-16635] - Generate multipart boundary using SecureRandom
- [SPR-16667] - Reduce ClassUtils.forName overhead (in particular for annotation introspection purposes)
- [SPR-16675] - Comprehensively cache annotated methods for interfaces and superclasses
- [SPR-16677] - Mixed use BeanNameAutoProxyCreator and AnnotationAwareAspectJAutoProxyCreator to proxy same bean
- [SPR-16678] - Add cpp to mime.types as text/plain
Refactoring
- [SPR-16622] - Use Collection.removeIf() where possible
- [SPR-16646] - Use Map.forEach instead of manual Map.Entry iteration wherever possible
Edit/Copy Release Notes
The text area below allows the project release notes to be edited and copied to another document.