Sub-task
- [SPR-14991] - Add an automatic flushing mechanism for RxNetty
- [SPR-14992] - Add an integration test to validate Reactor Netty automatic flushing
Bug
- [SPR-14773] - CssLinkResourceTransformer should not transform gzipped CSS files
- [SPR-14860] - RestTemplate POST and PUT don't work with Netty4ClientHttpRequestFactory
- [SPR-14889] - Netty4ClientHttpRequestFactory should use SSL if port is 443 or scheme is https
- [SPR-14891] - Content-based versions are not inserted into resource URLs in an error page
- [SPR-14892] - Injecting bean in configurable class using load-time weaving broken when referenced on scoped-proxy class
- [SPR-14899] - sse breaks with indenting serializer
- [SPR-14904] - Make andRoute() a drop-in replacement for and(route())
- [SPR-14907] - ExceptionHandlerExceptionResolver should not log propagated exceptions at warn level
- [SPR-14917] - AbstractSockJsSession deadlock when tomcat WsSession is closing
- [SPR-14929] - ConversionService performance regression
- [SPR-14931] - NPE in LoadTimeWeavingConfiguration: loadTimeWeaver() called too early
- [SPR-14934] - PathMatchingResourcePatternResolver provides duplicate resources with relative URL
- [SPR-14941] - NPE is thrown while writing the response
- [SPR-14965] - Self reference fallback in 4.3 is not meant to apply to collection elements
- [SPR-14971] - List-to-String conversion exception does not refer to element type
- [SPR-14972] - ImportAware.setImportMetadata not invoked if import inherited from superclass with negative condition
- [SPR-14975] - Exception accessing static resources in Spring Web Reactive with Netty
- [SPR-14978] - Concurrency problem in DeferredResult: potential double execution of handleResult
- [SPR-14996] - Behaviour of field injection for List dependencies that are produced and consumed by the same configuration class has changed in 4.3.5 snapshots
- [SPR-15013] - JsonObjectDecoder throws ArrayIndexOutOfBoundsException: -1 with valid input
- [SPR-15019] - Pointcut evaluation fails against AbstractHandlerMethodMapping$MappingRegistry with AspectJ 1.8.10
- [SPR-15026] - LinkedCaseInsensitiveMap does not properly support Java 8's merge() and compute() methods
- [SPR-15031] - MBeanExporter fails against null beans
- [SPR-15042] - Regression with poolTargetSource and scoped proxy
- [SPR-15055] - AutoProxyRegistrar throws NullPointer on @kotlin.Metadata Annotation
- [SPR-15060] - Annotated method argument matching performance issue
New Feature
- [SPR-14527] - Reactive WebSocket adapter layer
- [SPR-14533] - Reactive equivalent for RequestContext and BindStatus
- [SPR-14534] - Reactive HTTP response based RedirectView
- [SPR-14539] - Reactive WebClient SSE extractors
- [SPR-14832] - Add a functional way to register a bean
- [SPR-14951] - Support Kotlin nullable information for @Autowired and @Inject
- [SPR-15000] - Support for "request parameters" (query string + form data) in ServerWebExchange
- [SPR-15001] - Provide a RequestDataValueProcessor (or equivalent) mechanism in Spring Web Reactive
- [SPR-15028] - Support @Nullable annotations as indicators for optional injection points
- [SPR-15048] - Kotlin extension for GenericApplicationContext with registerBean(KClass) variants
- [SPR-15054] - Kotlin extension for Web function API
- [SPR-15056] - Kotlin extension for RestTemplate
Task
- [SPR-8704] - Doc: @Autowired properties not reliably set in FactoryBean before getObject
- [SPR-14361] - Doc: SpEL behavior when comparing value to null
- [SPR-14531] - Upgrade spring-messaging to the latest Reactor Netty client
- [SPR-14817] - Improve VersionResourceResolver javadoc
- [SPR-14906] - Upgrade build to Gradle 3.2.1
- [SPR-14912] - Update Spring Web Reactive Reference documentation
- [SPR-14924] - Upgrade to JUnit 5.0 M3
- [SPR-14957] - Doc: HibernateJpaVendorAdapter's "prepareConnection" may interfere with Hibernate 5.1+ in a JTA environment
- [SPR-14969] - Rename urlVariables to uriVariables for consistency
- [SPR-14976] - Misleading parameter names and JavaDoc in ResolvableType
- [SPR-14984] - Move web.client.reactive to web.reactive.client
- [SPR-14987] - SpEL and Date Literals
- [SPR-14994] - Clarify rollback-on consistency between DefaultTransactionAttribute and TransactionTemplate
- [SPR-15052] - Doc: Can't issue PATCH request using RestTemplate with SimpleClientHttpRequestFactory
- [SPR-15071] - Upgrade to ASM 5.2
- [SPR-15072] - Doc: autowire-candidate="false" does not affect autowire="byName"
Improvement
- [SPR-14097] - getBeanNamesForType(ResolvableType) does not reliably work for beans with AOP proxies
- [SPR-14165] - Support Kotlin nullable information in Spring MVC parameters
- [SPR-14505] - Deterministic and JVM-independent @Bean registration order within Class-reflected configuration classes
- [SPR-14529] - Reactive response URL-rewriting mechanism
- [SPR-14536] - Add HttpHeaders getter and setter for Content-Language
- [SPR-14613] - CommonsMultipartFile.getOriginalFilename() should be able to preserve header-specified filename as-is
- [SPR-14651] - Add RedirectAttributesMethodArgumentResolver to the default argument resolvers in ExceptionHandlerExceptionResolver
- [SPR-14654] - Cache ASM metadata at the context level
- [SPR-14675] - Align ISO timezone parsing in DateFormatter with Joda-Time / JSR-310
- [SPR-14690] - Spring WebSockets should support token-based authentication
- [SPR-14692] - ScheduledAnnotationBeanPostProcessor should reliably apply after AnnotationAwareAspectJAutoProxyCreator
- [SPR-14857] - Add PATCH HTTP operation to RestTemplate
- [SPR-14870] - Allow HandlerFunction to return a Mono<ServerResponse>
- [SPR-14875] - TaskScheduler interface should support java.time.Instant/Duration
- [SPR-14886] - Use String.intern() for Class reading
- [SPR-14888] - Detect invalid configuration for autoGrowCollectionLimit on DataBinder
- [SPR-14895] - Allow HTTP status exceptions to be easily thrown from Controllers
- [SPR-14897] - getBeanDefinitionNames should not leak the frozenBeanDefinitionNames array
- [SPR-14898] - BeanPropertyRowMapper should be able to convert SQL timestamp to java.time.LocalDate/LocalTime
- [SPR-14901] - Improve performance of STOMP message header encoding
- [SPR-14902] - ReactiveAdapter.Descriptor should have a more descriptive way of creating instances of it
- [SPR-14905] - Automatically set the right content type in BodyInserters#fromResource()
- [SPR-14913] - Allow serving static files from a directory to the functional web framework
- [SPR-14916] - HtmlUnitRequestBuilder ignores form encoding type
- [SPR-14918] - Support getting/writing the body as Flux<DataBuffer> in WebClient
- [SPR-14921] - DefaultListableBeanFactory.copyConfigurationFrom should provide independent AutowireCandidateResolver instance
- [SPR-14926] - Improve performance for conversions using a method parameter based type descriptor with annotations
- [SPR-14928] - ResourceUrlEncodingFilter, ResourceUrlProvider should correctly resolve hash'ed resource paths
- [SPR-14930] - Implement allocation-friendly method to get user count in SimpUserRegistry
- [SPR-14936] - PathMatchingResourcePatternResolver finds duplicate resources for executable jars but not for executable wars
- [SPR-14937] - Allow PayloadArgumentResolver to only apply to @Payload annotated parameters
- [SPR-14939] - ResponseEntity builders should allow casting an empty body to any type
- [SPR-14940] - Support for Jetty 9.4 (and 9.3.15+)
- [SPR-14942] - Include expression string in SpelParseException
- [SPR-14943] - Buffering of output in Spring Web Reactive with Netty too aggressive
- [SPR-14948] - Shared DefaultConversionService instance e.g. for BeanPropertyRowMapper
- [SPR-14952] - Make signature of ReactiveHttpOutputMessage#writeAndFlushWith(...) more flexible
- [SPR-14958] - @DateTimeFormat(iso = ISO.DATE_TIME) should use optimized formatter for LocalDateTime
- [SPR-14960] - Consistent autowiring behavior for specifically typed injection points against loosely typed @Bean methods
- [SPR-14977] - Add status code check to bodyTo[Mono|Flux]
- [SPR-14979] - Make it easier to use WebFilter with Functional Web Framework
- [SPR-14980] - Provide computeIfAbsent-like method on ObjectProvider
- [SPR-14985] - HttpInvokerClientInterceptor should not wrap client-side Error as RemoteAccessException
- [SPR-14986] - MimeTypeUtils.parseMimeType should ignore an inner ";" inside a quoted value
- [SPR-14988] - @GetMapping method annotation uses consumes attribute from @RequestMapping class annotation
- [SPR-14990] - Update JdbcUtils to improve enum support
- [SPR-14995] - Add request matchers for query parameters in MockRestRequestMatchers
- [SPR-15005] - Spring should tolerate zero-argument constructors with javax.inject.Inject
- [SPR-15006] - Provide a way to unregister a DataSource in SQLErrorCodesFactory
- [SPR-15007] - Support for java.util.Optional as a @RequestBody
- [SPR-15009] - Cannot customize autoGrowCollectionLimit on @InitBinder method when set custom MessageCodesResolver to Spring MVC
- [SPR-15010] - Scoped EntityManager bean cannot get unwrapped to Session (with Hibernate 5.2)
- [SPR-15011] - getBeanNamesForType(ResolvableType) doesn't match generic factory method return type for yet-to-be-created bean
- [SPR-15015] - OkHttpClientHttpRequestFactory should allow POST requests without body
- [SPR-15017] - LocaleContextHolder default value should be customizable
- [SPR-15018] - JdbcTemplate should consistently delegate to getColumnMapRowMapper
- [SPR-15020] - ForwardedHeaderFilter should support sendRedirect
- [SPR-15024] - Add HttpHeaders getter and setter for Accept-Language
- [SPR-15030] - Provide a way to specify hints in the functional web API
- [SPR-15040] - @Aspect pointcut declarations do not support dynamically loaded classes
- [SPR-15045] - Remove unused Log object from MessageHeaderAccessor
- [SPR-15067] - SchedulingConfigurer's ScheduledTaskRegistrar should reliably shut down before TaskScheduler
- [SPR-15069] - Track bean dependencies for calls between @Bean methods within @Configuration classes
Refactoring
- [SPR-14961] - Simplify ExchangeFilterFunction on specific WebClient exchanges
- [SPR-15053] - Refactor AbstractNestablePropertyAccessor#setPropertyValue(PropertyTokenHolder, PropertyValue)
Pruning
- [SPR-15047] - Remove outdated JpaExceptionTranslatorAspect
Edit/Copy Release Notes
The text area below allows the project release notes to be edited and copied to another document.