Release Notes - Spring Framework - Version 5.0 RC3 - HTML format

Sub-task

  • [SPR-15649] - Update Spring MVC to allow use of query param as replacement of path extension for content negotiation

Bug

  • [SPR-15084] - ServerHttpRequest getURI doesn't return the port the application is running on
  • [SPR-15669] - Disable Servlet request async timeout for reactive type streaming scenarios in Spring MVC
  • [SPR-15670] - Inconsistent @Nullable on AbstractDestinationResolvingMessagingTemplate
  • [SPR-15672] - SimpleRequestExpectationManager fails with sequential calls with different count
  • [SPR-15678] - @EventListener's 'condition' doesn't work as expected with proxied beans
  • [SPR-15679] - WebClient's handling of empty bodies seems broken
  • [SPR-15685] - ClientResponse bodyToFlux fails when encoding empty JSON array
  • [SPR-15701] - Exception Handler methods do not receive the original exception as argument
  • [SPR-15705] - Default Locale not set on Spring Webflux
  • [SPR-15706] - Netty4ClientHttpRequest does not include port along with host
  • [SPR-15707] - XmlEventDecoder triggers IllegalReferenceCountException at AbstractByteBuf
  • [SPR-15709] - WebAsyncManager is not compatible with the crosscontext mode
  • [SPR-15721] - org.apache.tomcat.websocket.WsSession.requestUri can be null
  • [SPR-15722] - Memory Leak due to not pruning factoryBeanObjectCache when closing the ApplicationContext
  • [SPR-15731] - WebFlux can't serialize "Object" return types as response body
  • [SPR-15738] - JMS Integration with Tibco causes deadlock while using DefaultMessageListenerContainer
  • [SPR-15739] - ResponseSpec#toEntity(...) fails when response status code is 5xx
  • [SPR-15740] - Issue with ServerRequest's queryParams
  • [SPR-15744] - WiretapConnector does not clean up exchanges
  • [SPR-15746] - JSP tags doesn't pick up JSTL-defined time zone at page level
  • [SPR-15753] - MockMvc duplicates PUT Parameter value
  • [SPR-15757] - ReflectionTestUtils accidentally requires spring-aop on the classpath
  • [SPR-15760] - AbstractJackson2HttpMessageConverter throws exception if log level is ERROR
  • [SPR-15769] - PropertyOrFieldReference invalidly reuses cached PropertyAccessor
  • [SPR-15784] - WebClient completes abruptly emitting null
  • [SPR-15785] - Returning ResponseEntity from WebFlux controller method declared to return Object serialises entire response entity to response body
  • [SPR-15786] - UriUtils.extractFileExtension() does not properly handle all fragments
  • [SPR-15794] - WebClient fails on empty JSON array response
  • [SPR-15799] - Support IPv6 Host addresses in HttpHeaders
  • [SPR-15803] - Parse error when reading JSON through the Jackson non-blocking parser

Improvement

  • [SPR-11114] - Fallback to defaultContentType if nothing more specific and producible has been specified in request
  • [SPR-15115] - Support ScriptEngine#eval(String, Bindings) in ScriptTemplateView
  • [SPR-15205] - StandardMultipartHttpServletRequest cannot decode multipart Content-Disposition header encoded by FormHttpMessageConverter
  • [SPR-15564] - Expose mapped handler as an exchange attribute
  • [SPR-15571] - First class WebSession change id support
  • [SPR-15600] - Upgrade to Objenesis 2.6 for Google App Engine Standard on Java 8 and for better JDK 9 support
  • [SPR-15604] - Cron expression validation method in CronSequenceGenerator improved
  • [SPR-15614] - Handle onError events that are sent by the servlet containers
  • [SPR-15620] - Ordering support in InterceptorRegistration
  • [SPR-15643] - [doc] Document urlDecode=false implies alwaysUseFullPath=true
  • [SPR-15657] - Ordering of WebClient.filter(s)
  • [SPR-15658] - Log a warning in Jackson builder when Kotlin is used without jackson-module-kotlin
  • [SPR-15663] - Option to combine typed PathPattern + PathPattern in PathPattern
  • [SPR-15664] - Support CachingHttpAsyncClient from httpasyncclient-cache in HttpComponentsAsyncClientHttpRequestFactory
  • [SPR-15674] - Provide hook for framework customizations of the WebTestClient MockServerSpec
  • [SPR-15682] - Align codec configuration in ExchangeStrategies.Builder and WebFluxConfigurer
  • [SPR-15684] - Fine-tune HTTP/RMI Invoker exception handling
  • [SPR-15690] - Allow WebClientBuilder.Builder to be cloned
  • [SPR-15691] - Simplify applying a strategy to requests from WebTestClient and WebTestClient
  • [SPR-15693] - AbstractValueAdaptingCache does not allow for flexible null value serialization
  • [SPR-15695] - Avoid requiring uri("") when using Web(Test)Client baseUrl
  • [SPR-15702] - AsyncHandlerInterceptor doesn't have a default method
  • [SPR-15708] - improve logging of DefaultCorsProcessor for rejected headers
  • [SPR-15717] - ForwardedHeaderFilter should expose option for not converting relative redirects to absolute ones
  • [SPR-15718] - Update getAttribute on ServerWebExchange and WebSession to align with Map getOrDefault
  • [SPR-15724] - Convenience API for custom error handling on WebClient
  • [SPR-15725] - Add BodyToMono and BodyToFlux overrides that receive ParameterizedTypeReference
  • [SPR-15727] - Jackson2JsonEncoder should stream custom streaming types
  • [SPR-15742] - add Mediatype for Nottingham Problem
  • [SPR-15743] - Add apply method to WebClient.Builder
  • [SPR-15747] - Improve performance of ReactiveAdapterRegistry
  • [SPR-15752] - LinkedCaseInsensitiveMap cannot access locale from subclass
  • [SPR-15758] - Improve handling of requests with an empty body and no content type to match Spring MVC
  • [SPR-15763] - CustomizableTraceInterceptor should allow INVOCATION_TIME placeholder in setExceptionMessage and make stack trace logging configurable
  • [SPR-15770] - Provide convenience method for applying WebTestClientConfigurer
  • [SPR-15773] - Use AsynchronousFileChannel + DataBufferUtils in WebFlux resource resolver/transformer chain
  • [SPR-15775] - Bean factory method collision with configuration class name gives unclear error message
  • [SPR-15779] - Ignore (Auto)Closeable for interface-based proxy decision
  • [SPR-15782] - Avoid silent default to http://localhost:80 in ReactorHttpClientConnector
  • [SPR-15797] - Disable DTD and external entities support in XmlEventDecoder to prevent XXE and XML bomb attack

New Feature

  • [SPR-15424] - Add Jackson Smile support to WebFlux
  • [SPR-15567] - Add CORS support for functional style routes for WebFlux
  • [SPR-15673] - Kotlin class instantiation with optional parameters and default values
  • [SPR-15696] - Allow CompletableFuture creation via ListenableFuture
  • [SPR-15715] - Cookie Support for Webflux Functional API
  • [SPR-15726] - Add write methods to DataBufferUtils
  • [SPR-15755] - Introduce Kotlin Functional bean registration DSL

Refactoring

  • [SPR-14528] - Leverage Jackson non-blocking JSON parsing (and remove netty-buffer dependency)
  • [SPR-15661] - Consider using ZonedDateTime in HttpHeaders
  • [SPR-15675] - Use fixed GMT time-zone for WebSessionManager Clock
  • [SPR-15688] - Update UrlBasedCorsConfigurationSource for leveraging PathPatternParser
  • [SPR-15720] - Extend null-safety to field level
  • [SPR-15733] - Declare spring-context as optional in web, webflux, messaging, jms
  • [SPR-15748] - Revise FileSystemResource / FileSystemUtils / FileCopyUtils towards NIO.2
  • [SPR-15792] - Make getters and setters null-safety consistent

Task

  • [SPR-15407] - Compatibility with Groovy 2.5
  • [SPR-15686] - Compatibility with JDK 9 release candidate
  • [SPR-15728] - Upgrade to JUnit Jupiter 5.0 M5
  • [SPR-15732] - InstantiationAwareBeanPostProcessor method postProcessAfterInstantiation doc issue
  • [SPR-15787] - Upgrade to Reactor Bismuth M3
  • [SPR-15791] - Upgrade to JUnit Jupiter 5.0 M6
  • [SPR-15793] - Clarify usage of the components indexer

Edit/Copy Release Notes

The text area below allows the project release notes to be edited and copied to another document.