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

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-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

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-15026] - LinkedCaseInsensitiveMap does not implement Java 8's merge() and compute() methods
  • [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

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

Pruning

  • [SPR-15047] - Remove outdated JpaExceptionTranslatorAspect

Refactoring

  • [SPR-14961] - Simplify ExchangeFilterFunction on specific WebClient exchanges
  • [SPR-15053] - Refactor AbstractNestablePropertyAccessor#setPropertyValue(PropertyTokenHolder, PropertyValue)

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"

Edit/Copy Release Notes

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