Skip to content

Releases: spring-projects/spring-framework

5.0.2 Release

17 Jan 14:18

Choose a tag to compare

⭐ New Features

  • Add missing RestOperations extensions [SPR-16229] #20777
  • Set Vary: Origin on CORS unauthorized response [SPR-16224] #20772
  • SqlParameterSourceUtils.createBatch with Collection support [SPR-16215] #20763
  • spring-jdbc : Improve memory allocations when substituting named parameters. [SPR-16170] #20718
  • WebTestClient supports custom TLS certificate verification [SPR-16168] #20716
  • Reduce access on headers for STOMP messaging [SPR-16165] #20713
  • Make JpaVendorAdapters JTA-aware (in particular for Hibernate 5.1/5.2) [SPR-16162] #20710
  • Support prefix-based Servlet path mapping in ServletHttpHandlerAdapter [SPR-16155] #20703
  • Improve ReactorNettyTcpClient shutdown logic [SPR-16145] #20693
  • ResourceLoader with local "file:foo/bar/file.file" reference does not return WritableResource [SPR-16140] #20688
  • Add StatusAssertions.isForbidden [SPR-16129] #20677
  • Allow to set cookies via WebFlux functional handlers [SPR-16121] #20669
  • PathContainer-based implementation of extractPathWithinPattern [SPR-16120] #20668
  • Sending form and multipart data with WebTestClient [SPR-16118] #20666
  • Spring context indexer does not work with nested classes [SPR-16112] #20660
  • STOMP SEND should not map to @SubscribeMapping methods [SPR-16109] #20657
  • Provide read access to the scheduled tasks at runtime [SPR-15982] #20532
  • WebFlux Should Communicate X509 Authentication [SPR-15964] #20516

🪲 Bug Fixes

  • commons-logging LogFactory and String arguments [SPR-16226] #20774
  • Nullability inconsistency in DataAccessUtils requiredSingleResult vs requiredUniqueResult [SPR-16225] #20773
  • InMemoryWebSession.changeSessionId reports error if the session does not exist [SPR-16201] #20749
  • Wrong byte code for compiled SpEL when JDK proxy method invocation is used [SPR-16191] #20739
  • NPE in ErrorsMethodArgumentResolver [SPR-16187] #20735
  • spring webflux: stack overflow when response data is greater then 16MB [SPR-16180] #20728
  • NullPointer in DefaultRequestBodyUriSpec.cookies method [SPR-16178] #20726
  • NumberFormatException caused by property paths from JSR-303 based validation with no index into a collection [SPR-16177] #20725
  • AbstractMessageConverterMethodProcessor ignores HttpEntityMethodProcessor's Content-Type header [SPR-16172] #20720
  • Printing of session with null attributes results in NullPointerException [SPR-16164] #20712
  • CastClass exception (NullBean instead of 'null' value) when getting map of beans directly from ApplicationContext [SPR-16163] #20711
  • bean(nameOfBean) doesn't work with Spring Framework 5.0.1 on AspectJ 1.8.12 [SPR-16161] #20709
  • MockHttpServletResponse.getDateHeader fails with NPE for non-existing header [SPR-16160] #20708
  • @RequestAttribute Mono<?> is not allowed for attributes that are of type Mono [SPR-16158] #20706
  • When using NamedParameterJdbcTemplate, NVARCHAR or NCLOB(4000 characters or less) columns are not properly populated since StatementCreatorUtils does setString for these types instead of setNString. [SPR-16154] #20702
  • Wildcard JPA packages are not scanned [SPR-16152] #20700
  • Early ApplicationContext close call may lead to ApplicationEventMulticaster/LifecycleProcessor access exception [SPR-16149] #20697
  • ClassPathResource.createRelative is using wrong ClassPathResource constructor for the returned resource [SPR-16146] #20694
  • AbstractDispatcherHandlerInitializer does not detect WebFilter beans [SPR-16144] #20692
  • MockHttpServletRequest with Host: set builds wrong getRequestURL() [SPR-16138] #20686
  • InterceptingHttpAccessor.setInterceptors should support immutable lists [SPR-16137] #20685
  • AbstractRequestExpectationManager fails with "Expectations already declared" when ResponseCreator.createResponse throws an exception [SPR-16132] #20680
  • Multipart form data can no longer be sent with syncBody in WebTestClient [SPR-16131] #20679
  • Disable CORS credentials by default [SPR-16130] #20678
  • AbstractMessageSource does not support null as default message anymore [SPR-16127] #20675
  • Cookies are not available from an ExchangeResult [SPR-16124] #20672
  • SpEL method invocation with varargs on proxy [SPR-16122] #20670
  • KotlinReflectionParameterNameDiscoverer does not handle instance-extension methods properly [SPR-16119] #20667
  • PathMatchingResourcePatternResolver returns duplicate resources when using classpath* prefix [SPR-16117] #20665
  • BasicAuth interceptor does not accept empty username [SPR-16116] #20664
  • Fix Reactive JsonView + HttpEntity handling [SPR-16098] #20647
  • Avoid implicit autowiring with Kotlin secondary constructors [SPR-16022] #20571

📔 Documentation

  • [doc] WebClient's javadocs are invalid [SPR-16197] #20745
  • Incorrect SpEL example in reference documentation [SPR-16111] #20659
  • Bug in Bean Scopes Documentation [SPR-16230] #19129

4.3.13 Release

17 Jan 14:21

Choose a tag to compare

⭐ New Features

  • Prevent WebSocket buffer overflow through application-level flow control [SPR-16089] #20638
  • SchedulingConfigurer and JmsListenerConfigurer should respect @Order [SPR-16090] #20639
  • Avoid temporary String creation in StringUtils.starts/endsWithIgnoreCase [SPR-16095] #20644
  • Make JpaVendorAdapters JTA-aware (in particular for Hibernate 5.1/5.2) [SPR-16162] #20710
  • Reduce access on headers for STOMP messaging [SPR-16165] #20713
  • spring-jdbc : Improve memory allocations when substituting named parameters. [SPR-16170] #20718

🪲 Bug Fixes

  • Checkbox/RadioButton incorrectly converts collections of enums with a custom converter [SPR-16082] #20631
  • @ModelAttribute binding defined globally for particular attribute rather than per method invocation [SPR-16083] #20632
  • WebSphereUowTransactionManager swallows original exception when commit fails for another reason [SPR-16102] #20650
  • Incorrectly identify bridged method on interface [SPR-16103] #20651
  • PathMatchingResourcePatternResolver returns duplicate resources when using classpath* prefix [SPR-16117] #20665
  • SpEL method invocation with varargs on proxy [SPR-16122] #20670
  • AbstractRequestExpectationManager fails with "Expectations already declared" when ResponseCreator.createResponse throws an exception [SPR-16132] #20680
  • MockHttpServletRequest with Host: set builds wrong getRequestURL() [SPR-16138] #20686
  • ClassPathResource.createRelative is using wrong ClassPathResource constructor for the returned resource [SPR-16146] #20694
  • Early ApplicationContext close call may lead to ApplicationEventMulticaster/LifecycleProcessor access exception [SPR-16149] #20697
  • When using NamedParameterJdbcTemplate, NVARCHAR or NCLOB(4000 characters or less) columns are not properly populated since StatementCreatorUtils does setString for these types instead of setNString. [SPR-16154] #20702
  • MockHttpServletResponse.getDateHeader fails with NPE for non-existing header [SPR-16160] #20708
  • NumberFormatException caused by property paths from JSR-303 based validation with no index into a collection [SPR-16177] #20725
  • Wrong byte code for compiled SpEL when JDK proxy method invocation is used [SPR-16191] #20739
  • DefaultResponseErrorHandler.hasError doesn't tolerate unknown status codes [SPR-16108] #20656
  • setArguments(null) on MethodInvoker no longer coerces null to Object[0] [SPR-16075] #20624
  • RequestMapping method returning Future with null result causes NullPointerException [SPR-16072] #20621
  • WebAsyncManager concurrency issue with SseEmitter when client disconnect [SPR-16058] #20607

📔 Documentation

  • Improve documentation of lite configuration mode [SPR-16076] #20625
  • Clarify Bean destroyMethod documentation [SPR-16078] #20627
  • Incorrect SpEL example in reference documentation [SPR-16111] #20659
  • End of first-class JDK 6 support [SPR-16185] #20733

5.0.1 Release

17 Jan 14:18

Choose a tag to compare

⭐ New Features

  • Avoid temporary String creation in StringUtils.starts/endsWithIgnoreCase [SPR-16095] #20644
  • Consider to add ability to modify the URI on ClientRequest.Builder [SPR-16093] #20642
  • SchedulingConfigurer and JmsListenerConfigurer should respect @Order [SPR-16090] #20639
  • Prevent WebSocket buffer overflow through application-level flow control [SPR-16089] #20638
  • No way to signal that controller has handled the request in Webflux [SPR-16087] #20636
  • Webflux handler method does not accept Map as parameter [SPR-16086] #20635
  • Consider adding MockServerWebExchange.from(MockServerHttpRequest.BaseBuilder<?>) [SPR-16079] #20628
  • MockMvc async does not re-use response instance on async dispatch [SPR-16067] #20616
  • Annotations like @Service should add @AliasFor for @Component [SPR-16066] #20615
  • Add convenient method to construct ParameterizedTypeReference from Type [SPR-16054] #20603
  • Support JDK9 Flow.Publisher as an adaptable reactive type [SPR-16052] #20601
  • Lower log level of ResponseStatusExceptionHandler [SPR-16049] #20598
  • resourceHandlerMapping should be registered with shared HandlerInterceptor [SPR-16034] #20583
  • ResourceWebHandler should throw ResponseStatusException when resources are not found [SPR-16023] #20572
  • Controller fails to map for URLs patterns containing semicolons [SPR-16005] #20554

🪲 Bug Fixes

  • Incorrectly identify bridged method on interface [SPR-16103] #20651
  • WebSphereUowTransactionManager swallows original exception when commit fails for another reason [SPR-16102] #20650
  • ContentDisposition class cannot parse quoted filename with ; [SPR-16091] #20640
  • @ModelAttribute binding defined globally for particular attribute rather than per method invocation [SPR-16083] #20632
  • Checkbox/RadioButton incorrectly converts collections of enums with a custom converter [SPR-16082] #20631
  • Returning non-standard HTTP status code causes exceptions on WebFlux [SPR-16073] #20622
  • DataBufferUtils.read(ReadableByteChannel,...) may corrupt data when used with NettyDataBuffers [SPR-16070] #20619
  • Empty NettyByteBuffer.asByteBuffer() returns ByteBuffer with zero capacity [SPR-16068] #20617
  • BeanDefinitionValidationException when beans are null (NullBean) and initMethod is set [SPR-16063] #20612
  • WebClient.mutate() impacts future .mutate() invocations [SPR-16059] #20608
  • WebClient failed to write application/x-www-form-urlencoded [SPR-16055] #20604
  • AbstractMessageSource does not properly interact with DelegatingMessageSource parent [SPR-16047] #20596
  • sort BeanDefinitionRegistryPostProcessors added by other BeanDefinitionRegistryPostProcessors [SPR-16043] #20592
  • CastClass exception when wiring Map of beans (NullBean instead of 'null' in the map) [SPR-16033] #20582
  • Spring EL does not allow '\0' characters [SPR-16032] #20581
  • CookieWebSessionIdResolver should set path to the context path + "/" [SPR-16030] #20579
  • WebClient throws ClassCastException for bodyToMono(ParameterizedTypeReference) [SPR-16025] #20574

📔 Documentation

  • Clarify Bean destroyMethod documentation [SPR-16078] #20627
  • Improve documentation of lite configuration mode [SPR-16076] #20625
  • Top-level "Language Support" reference section [SPR-16044] #20593
  • Broken links to documentation section "Message Converters" [SPR-16024] #20573
  • Docs for WebTestClient are pretty thin [SPR-16009] #20558
  • Document HTTP/2 support in Spring 5 [SPR-15821] #20376
  • Document Spring recommendations/restrictions for Java 9 module setups [SPR-14579] #19148

4.3.12 Release

17 Jan 14:21

Choose a tag to compare

⭐ New Features

  • Add convenient method to construct ParameterizedTypeReference from Type [SPR-16054] #20603
  • Backport s/s/m/j/o/s/m/w/MockPart.java from 5.x to 4.3.x [SPR-15854] #20409

🪲 Bug Fixes

  • Request params Optional<List and List are inconsistent [SPR-15676] #20235
  • java.util.Optional MultipartFile[] @RequestParam argument is null in multipart/form-data POST [SPR-15918] #20472
  • only one MultipartFile object populated when using an java.util.Optional MutipartFile array or list @RequestParam [SPR-15919] #20473
  • HttpEntityMethodProcessor discards headers [SPR-15952] #20504
  • TaskExecutorRegistration.getTaskExecutor() overrides executor properties of a provided ThreadPoolTaskExecutor [SPR-15962] #20514
  • JmsMessagingTemplate is not correctly configured [SPR-15965] #20517
  • ChannelRegistration.setInterceptors is misnamed [SPR-15976] #20527
  • RestTemplate doesn't consistently tolerate unknown HTTP status codes [SPR-15978] #20529
  • PathMatchingResourcePatternResolver provides duplicate resources when using classpath* prefix combined with ant-style [SPR-15989] #20539
  • Spring EL does not allow '\0' characters [SPR-16032] #20581
  • sort BeanDefinitionRegistryPostProcessors added by other BeanDefinitionRegistryPostProcessors [SPR-16043] #20592
  • SpelExpression throws NullPointerException instead of EvaluationException for primitives [SPR-16123] #20671

5.0 GA Release

17 Jan 14:18

Choose a tag to compare

⭐ New Features

  • Support autowiring by constructor in Kotlin bean DSL [SPR-16014] #20563
  • WebFlux support for HttpHeaders controller method return value [SPR-16006] #20555
  • Lambda-based consumption of an ObjectProvider's object when available [SPR-16001] #20550
  • WebFlux support for Locale, TimeZone, ZoneId controller method arguments [SPR-15998] #20547
  • WebFlux support for UriBuilder, UriComponentsBuilder controller method arguments [SPR-15997] #20546
  • WebFlux support for HTTP HEAD [SPR-15994] #20543
  • Revisit how WebClient disposes connection [SPR-15993] #20542
  • WebSession provide invalidate method [SPR-15960] #20512
  • Allow Consumer-style access to FluxExchangeResult within chain of calls [SPR-15959] #20511
  • Introduce ForwardedHeaderFilter for WebFlux [SPR-15954] #20506
  • Provide an API for introspection of handler mappings [SPR-15934] #20488
  • Log message for a composed router function contains no information about the mappings or their handlers [SPR-15933] #20487
  • ReactorServerHttpRequest.getUri() does not include scheme [SPR-15931] #20485
  • Revisit handling of missing fields (without default values) for immutable data classes [SPR-15877] #20432
  • Get a description of all registered routes in a RouterFunction [SPR-15711] #20268
  • Stable module names for Spring Framework jars on JDK 9 module path [SPR-13716] #18289

🪲 Bug Fixes

  • Delegating File downloads sends incomplete chunks [SPR-15949] #22194
  • Fix behavior of ClientResponse bodyToMono and bodyToFlux with Void.class [SPR-16018] #20567
  • AutowiredAnnotationBeanPostProcessor picks "wrong" constructor for Kotlin class [SPR-16012] #20561
  • Support non-standard classes in Kotlin reflection discovery methods [SPR-15999] #20548
  • WebFlux support for HTTP OPTIONS not working [SPR-15995] #20544
  • DispatcherHandler no longer orders HandlerMapping beans [SPR-15991] #20541
  • PathMatchingResourcePatternResolver provides duplicate resources when using classpath* prefix combined with ant-style [SPR-15989] #20539
  • ProtobufHttpMessageConverter: JSON not written to response [SPR-15988] #20538
  • RestTemplate doesn't consistently tolerate unknown HTTP status codes [SPR-15978] #20529
  • "Parameter metadata not available for the given statement" SQL Exception after upgrading to Spring 5.0 RC4 [SPR-15977] #20528
  • ChannelRegistration.setInterceptors is misnamed [SPR-15976] #20527
  • AbstractJackson2Decoder breaks Custom Deserializers [SPR-15975] #20526
  • DataBuffer Should Release Manually when Exception Thrown [SPR-15966] #20518
  • JmsMessagingTemplate is not correctly configured [SPR-15965] #20517
  • InMemoryWebSessionStore Leaks Memory [SPR-15963] #20515
  • TaskExecutorRegistration.getTaskExecutor() overrides executor properties of a provided ThreadPoolTaskExecutor [SPR-15962] #20514
  • spring-jcl does not include exported packages of java commons logging [SPR-15957] #20509
  • HttpEntityMethodProcessor discards headers [SPR-15952] #20504
  • WebClient: DELETE request should not send transfer-encoding: chunked header [SPR-15947] #20500
  • WebClient doesn't send error signal for error responses [SPR-15946] #20499
  • only one MultipartFile object populated when using an java.util.Optional MutipartFile array or list @RequestParam [SPR-15919] #20473
  • java.util.Optional MultipartFile[] @RequestParam argument is null in multipart/form-data POST [SPR-15918] #20472
  • Request params Optional<List and List are inconsistent [SPR-15676] #20235

📔 Documentation

  • Restructure Web Section of the documentation to include reactive support [SPR-15149] #19715
  • Document JUnit Jupiter support in the reference manual [SPR-14524] #19093

5.0 RC4 Release

17 Jan 14:18

Choose a tag to compare

⭐ New Features

  • Provide hierarchy traversal support for getBeanNamesForAnnotation [SPR-15923] #20477
  • Ensure that WebClient disposes the HTTP client connection once the client response is consumed [SPR-15920] #20474
  • Introduce header-based WebSessionIdResolver [SPR-15917] #20471
  • WebClient - add option to disable chunked transfer [SPR-15914] #20468
  • Enable by default HTTP compression support in Reactor WebClient [SPR-15908] #20462
  • WebFlux @MVC Controllers do not support @SessionAttributes. (plus SessionStatus) [SPR-15887] #20442
  • Provide hook in DefaultWebSessionManager to support creating custom WebSession implementation [SPR-15876] #20431
  • Immutable object constructor arguments not considering WebDataBinder's FIELD_MARKER_PREFIX [SPR-15871] #20426
  • Add support for Kotlin autowired constructor with optional parameters [SPR-15847] #20402
  • BeanDefinitionBuilder method arguments not annotated with @Nullable [SPR-15841] #20396
  • MockMvc doesn't honor params in RequestMapping when no equal sign [SPR-15831] #20386
  • Autowire contract is not honored in cases where FactoryBean or @Bean return null [SPR-15829] #20384
  • WebClientException should allow access to status code of the response [SPR-15824] #20379
  • URI variables with MockRestRequestMatchers's requestTo [SPR-15819] #20374
  • Use ParameterizedTypeReference instead of Class in Kotlin extensions [SPR-15818] #20373
  • Add ParameterizedTypeReference method variants to ServerRequest/ServerResponse [SPR-15817] #20372
  • Avoid requiring it lambda parameter in Kotlin bean DSL [SPR-15815] #20370
  • Media type fails to match types with multiple '+' characters [SPR-15795] #20350
  • Support range requests for Spring MVC request mapped methods that return a Resource [SPR-15789] #20344
  • ExchangeFilterFunctions Explicit Model For Basic Authentication Credentials [SPR-15764] #20319
  • BindingResult support for constructor argument mismatch on immutable data object [SPR-15542] #20101
  • Leveraging kotlin-reflect to determine interface method parameters [SPR-15541] #20100
  • Consistent overriding for all variants of init/destroy method inheritance [SPR-15532] #20091

🪲 Bug Fixes

  • spring-framework-bom lists unpublished spring-build-src module [SPR-15932] #20486
  • WebFlux incorrectly falls back to application/json for method that produces application/octet-stream and returns ResponseEntity [SPR-15910] #20464
  • ExceptionHandlerMethodResolver loses all handler methods [SPR-15907] #20461
  • no dependencyManagement in spring-framework-bom [SPR-15890] #20445
  • DefaultWebSessionManager requires DefaultWebSession [SPR-15875] #20430
  • Fix overridden methods nullability [SPR-15869] #20424
  • Jackson2JsonEncoder and Jackson2JsonDecoder should use provided mime types [SPR-15866] #20421
  • Reactive GET request query-params are not decoded correctly. + sign must be space. [SPR-15860] #20415
  • Kotlin bean instantiation regression with default declared constructor [SPR-15851] #20406
  • FileSystemUtils.deleteRecursively always returns false [SPR-15846] #20401
  • FileSystemUtils.copyRecursively no longer replaces existing files [SPR-15845] #20400
  • SpringValidatorAdapter fails to retrieve value for Bean Validation 2.0's "" literal [SPR-15839] #20394
  • Regression after URI template support added to MockMvcResultMatchers [SPR-15834] #20389
  • AnnotationAwareOrderComparator doesn't handle null values anymore [SPR-15823] #20378
  • Setting user header on CONNECT message stopped working [SPR-15822] #20377
  • [Kotlin] Warning message about private final methods. [SPR-15820] #20375
  • AbstractCodecConfigurer creates Jackson Encoders/Decoders each time when getters are called [SPR-15816] #20371
  • TemplateAwareExpressionParser.parseExpression does not accept null ParserContext anymore [SPR-15810] #20365
  • WebClient.post() not sending complete Flux on Windows [SPR-15790] #20345
  • High percent of failures (timeout) under load from server-side WebClient requests [SPR-15584] #20143
  • 📔 Documentation

    • Is "bodyToEntity" reference incorrect in the org.springframework.web.reactive.function.client.WebClient.RequestHeadersSpec Javadoc? [SPR-15912] #20466
    • CONTRIBUTING-DOCUMENTATION.adoc still refers to the reference gradle task [SPR-15906] #20460
    • Typo in matrix variable example [SPR-15872] #20427

4.3.11 Release

17 Jan 14:21

Choose a tag to compare

⭐ New Features

  • @Lazy collection of optional elements should not crash when no candidates are found [SPR-15858] #20413
  • WebAsyncManager should cancel task thread on timeout [SPR-15852] #20407
  • Consistent logging in Environment and PropertySource implementations [SPR-15825] #20380

🪲 Bug Fixes

  • StompDecoder Logs Null Session IDs for Heartbeats [SPR-15937] #20491
  • Error on type argument constraint validation failure [SPR-15916] #20470
  • StringIndexOutOfBoundsException from RestTemplate.doExecute IOException handler when query string is empty [SPR-15900] #20454
  • SimpleAsyncTaskExecutor not respect ConcurrencyThrottleSupport.NO_CONCURRENCY limit [SPR-15895] #20449
  • Should call getNativeResponse() instead of getNativeRequest() in FrameworkServlet [SPR-15867] #20422
  • Unable to use Hibernate Validator 4.3.2 if Bean Validation API 1.1 is on the classpath [SPR-15856] #20411
  • SimpleApplicationEventMulticaster does not deal with lambda-defined listeners when ErrorHandler is set [SPR-15838] #20393
  • spring-aspects should remain on AspectJ 1.8.9 by default (since aspectjrt 1.8.10 requires Java 7+) [SPR-15836] #20391
  • Parameter values are null when making a PUT request [SPR-15828] #20383
  • Follow-up: AbstractMethodError when calling validated method of MethodValidationPostProcessor is using a @Lazy validator [SPR-15807] #20362
  • Logs fill with broken pipe when using SockJS [SPR-15802] #20357
  • Invalid WARN when returning a BeanDefinitionRegistryPostProcessor from within a @Configuration class [SPR-14603] #19172

5.0 RC3 Release

17 Jan 14:18

Choose a tag to compare

⭐ New Features

  • Disable DTD and external entities support in XmlEventDecoder to prevent XXE and XML bomb attack [SPR-15797] #20352
  • Avoid silent default to http://localhost:80 in ReactorHttpClientConnector [SPR-15782] #20337
  • Use AsynchronousFileChannel + DataBufferUtils in WebFlux resource resolver/transformer chain [SPR-15773] #20328
  • Provide convenience method for applying WebTestClientConfigurer [SPR-15770] #20325
  • Improve handling of requests with an empty body and no content type to match Spring MVC [SPR-15758] #20313
  • Introduce Kotlin Functional bean registration DSL [SPR-15755] #20310
  • Improve performance of ReactiveAdapterRegistry [SPR-15747] #20303
  • Add apply method to WebClient.Builder [SPR-15743] #20299
  • add Mediatype for Nottingham Problem [SPR-15742] #20298
  • Jackson2JsonEncoder should stream custom streaming types [SPR-15727] #20283
  • Add write methods to DataBufferUtils [SPR-15726] #20282
  • Add BodyToMono and BodyToFlux overrides that receive ParameterizedTypeReference [SPR-15725] #20281
  • Convenience API for custom error handling on WebClient [SPR-15724] #20280
  • Update getAttribute on ServerWebExchange and WebSession to align with Map getOrDefault [SPR-15718] #20274
  • Cookie Support for Webflux Functional API [SPR-15715] #20271
  • improve logging of DefaultCorsProcessor for rejected headers [SPR-15708] #20265
  • AsyncHandlerInterceptor doesn't have a default method [SPR-15702] #20259
  • Allow CompletableFuture creation via ListenableFuture [SPR-15696] #20255
  • Avoid requiring uri("") when using Web(Test)Client baseUrl [SPR-15695] #20254
  • Simplify applying a strategy to requests from WebTestClient and WebTestClient [SPR-15691] #20250
  • Allow WebClientBuilder.Builder to be cloned [SPR-15690] #20249
  • Align codec configuration in ExchangeStrategies.Builder and WebFluxConfigurer [SPR-15682] #20241
  • Provide hook for framework customizations of the WebTestClient MockServerSpec [SPR-15674] #20233
  • Kotlin class instantiation with optional parameters and default values [SPR-15673] #20232
  • Option to combine typed PathPattern + PathPattern in PathPattern [SPR-15663] #20222
  • Log a warning in Jackson builder when Kotlin is used without jackson-module-kotlin [SPR-15658] #20217
  • Ordering of WebClient.filter(s) [SPR-15657] #20216
  • [doc] Document urlDecode=false implies alwaysUseFullPath=true [SPR-15643] #20202
  • Ordering support in InterceptorRegistration [SPR-15620] #20179
  • Handle onError events that are sent by the servlet containers [SPR-15614] #20173
  • First class WebSession change id support [SPR-15571] #20130
  • Add CORS support for functional style routes for WebFlux [SPR-15567] #20126
  • Expose mapped handler as an exchange attribute [SPR-15564] #20123
  • Add Jackson Smile support to WebFlux [SPR-15424] #19985
  • StandardMultipartHttpServletRequest cannot decode multipart Content-Disposition header encoded by FormHttpMessageConverter [SPR-15205] #19769
  • Support ScriptEngine#eval(String, Bindings) in ScriptTemplateView [SPR-15115] #19682
  • Fallback to defaultContentType if nothing more specific and producible has been specified in request [SPR-11114] #15740

🪲 Bug Fixes

  • Parse error when reading JSON through the Jackson non-blocking parser [SPR-15803] #20358
  • Support IPv6 Host addresses in HttpHeaders [SPR-15799] #20354
  • WebClient fails on empty JSON array response [SPR-15794] #20349
  • Returning ResponseEntity from WebFlux controller method declared to return Object serialises entire response entity to response body [SPR-15785] #20340
  • WebClient completes abruptly emitting null [SPR-15784] #20339
  • WiretapConnector does not clean up exchanges [SPR-15744] #20300
  • Issue with ServerRequest's queryParams [SPR-15740] #20296
  • ResponseSpec#toEntity(...) fails when response status code is 5xx [SPR-15739] #20295
  • WebFlux can't serialize "Object" return types as response body [SPR-15731] #20287
  • org.apache.tomcat.websocket.WsSession.requestUri can be null [SPR-15721] #20277
  • XmlEventDecoder triggers IllegalReferenceCountException at AbstractByteBuf [SPR-15707] #20264
  • Default Locale not set on Spring Webflux [SPR-15705] #20262
  • Exception Handler methods do not receive the original exception as argument [SPR-15701] #20258
  • ClientResponse bodyToFlux fails when encoding empty JSON array [SPR-15685] #20244
  • WebClient's handling of empty bodies seems broken [SPR-15679] #20238
  • Inconsistent @Nullable on AbstractDestinationResolvingMessagingTemplate [SPR-15670] #20229
  • Disable Servlet request async timeout for reactive type streaming scenarios in Spring MVC [SPR-15669] #20228
  • ServerHttpRequest getURI doesn't return the port the application is running on [SPR-15084] #19650

4.3.10 Release

17 Jan 14:21

Choose a tag to compare

⭐ New Features

  • Ignore (Auto)Closeable for interface-based proxy decision [SPR-15779] #20334
  • Bean factory method collision with configuration class name gives unclear error message [SPR-15775] #20330
  • CustomizableTraceInterceptor should allow INVOCATION_TIME placeholder in setExceptionMessage and make stack trace logging configurable [SPR-15763] #20318
  • LinkedCaseInsensitiveMap cannot access locale from subclass [SPR-15752] #20307
  • ForwardedHeaderFilter should expose option for not converting relative redirects to absolute ones [SPR-15717] #20273
  • AbstractValueAdaptingCache does not allow for flexible null value serialization [SPR-15693] #20252
  • Fine-tune HTTP/RMI Invoker exception handling [SPR-15684] #20243
  • Support CachingHttpAsyncClient from httpasyncclient-cache in HttpComponentsAsyncClientHttpRequestFactory [SPR-15664] #20223
  • Cron expression validation method in CronSequenceGenerator improved [SPR-15604] #20163
  • Upgrade to Objenesis 2.6 for Google App Engine Standard on Java 8 and for better JDK 9 support [SPR-15600] #20159

🪲 Bug Fixes

  • UriUtils.extractFileExtension() does not properly handle all fragments [SPR-15786] #20341
  • PropertyOrFieldReference invalidly reuses cached PropertyAccessor [SPR-15769] #20324
  • ClassCastException during deserialization of ScopedObject [SPR-15766] #20321
  • AbstractJackson2HttpMessageConverter throws exception if log level is ERROR [SPR-15760] #20315
  • ReflectionTestUtils accidentally requires spring-aop on the classpath [SPR-15757] #20312
  • MockMvc duplicates PUT Parameter value [SPR-15753] #20308
  • JSP tags doesn't pick up JSTL-defined time zone at page level [SPR-15746] #20302
  • JMS Integration with Tibco causes deadlock while using DefaultMessageListenerContainer [SPR-15738] #20294
  • Memory Leak due to not pruning factoryBeanObjectCache when closing the ApplicationContext [SPR-15722] #20278
  • WebAsyncManager is not compatible with the crosscontext mode [SPR-15709] #20266
  • Netty4ClientHttpRequest does not include port along with host [SPR-15706] #20263
  • @EventListener's 'condition' doesn't work as expected with proxied beans [SPR-15678] #20237
  • SimpleRequestExpectationManager fails with sequential calls with different count [SPR-15672] #20231

5.0 RC2 Release

17 Jan 14:18

Choose a tag to compare

⭐ New Features

  • Expose structured request path from ServerHttpRequest in WebFlux [SPR-15648] #20207
  • add EditorConfig file, help to unified code style [SPR-15644] #20203
  • Use undecoded path for request mapping in WebFlux [SPR-15640] #20199
  • Favor query parameters for content negotiation in WebFlux [SPR-15639] #20198
  • Use lambda to refact the code [SPR-15637] #20196
  • Replace ResolvableType with ParameterizedTypeReference in WebFlux APIs used in applications [SPR-15636] #20195
  • ClientRequest needs way to set header, overriding current values [SPR-15635] #20194
  • Refact iterator of Map with Java8's Map.forEach [SPR-15631] #20190
  • Use the diamond syntax, remove the type declarations [SPR-15628] #20187
  • Use Map.forEach instead of Map.entrySet().forEach [SPR-15627] #20186
  • Provide support for Kotlin KClasses in WebTestClient API [SPR-15622] #20181
  • Make SystemEnvironmentPropertySource.resolvePropertyName protected [SPR-15617] #20176
  • UriUtils.encode* methods needs to use Charset instance. [SPR-15613] #20172
  • Replace ParsingPathMatcher with PathPattern registry [SPR-15608] #20167
  • Improve support for 0...n UnaryOperator to ExchangeMutatorWebFilter [SPR-15599] #20158
  • GenericMessagingTemplate - add overloaded doReceive() for dynamic receiveTimeout [SPR-15591] #20150
  • Provide access to the unexpanded URI template when using WebTestClient [SPR-15589] #20148
  • Add support to WebTestClient for consuming the ExchangeResult [SPR-15587] #20146
  • Need to adjust code in Spring Framework to allow compilation by Eclipse 4.7 compiler [SPR-15586] #20145
  • HandlerStrategies should use Lists instead of Streams [SPR-15578] #20137
  • Support missing properties from Content-Disposition spec [SPR-15555] #20114
  • Add ability to get the Principal to RouterFunctions [SPR-15552] #20111
  • ProtobufHttpMessageConverter: Make JSON format configurable [SPR-15550] #20109
  • RestTemplate is missing "Typed" error handler. [SPR-15544] #20103
  • Introduce null-safety of Spring Framework API [SPR-15540] #20099
  • Consider reordering of RequestUpgradeStrategy detection in HandshakeWebSocketService [SPR-15539] #20098
  • Revisit DispatcherHandler integration for RouterFunctions [SPR-15536] #20095
  • Simplify adding ResponseCookie to ServerHttpResponse [SPR-15523] #20082
  • Update Cookie headers in MockServerHttpRequest and Response [SPR-15522] #20081
  • Defer logic in DefaultWebFilter.filter [SPR-15520] #20079
  • Support WebFilter in RouterFunctions.toHttpHandler [SPR-15518] #20077
  • Consider making DefaultWebFilterChain not change state [SPR-15517] #20076
  • RequestPartMethodArgumentResolver in WebFlux does not support decoding (e.g. to JSON) the content of a part [SPR-15515] #20074
  • Make it possible to pass method and URL to ResponseErrorHandler [SPR-15511] #20070
  • Consider Renaming request-id [SPR-15501] #20060
  • Parse request path only once during routing [SPR-15397] #19960
  • Introduce a LocaleContextResolver abstraction in WebFlux [SPR-15036] #19602
  • spring.ftl doesn't work on freemarker 2.3.24+'s auto escaping feature [SPR-14740] #19306

🪲 Bug Fixes

  • JdkDynamicAopProxy constructs ReflectiveMethodInvocation with EmptyTargetSource.EMPTY_TARGET for static methods [SPR-15651] #20210
  • Dramatic performance degradation on writing to DefaultDataBuffer after filling the initial capacity [SPR-15647] #20206
  • NPE in AnnotationUtils.getValue [SPR-15642] #20201
  • Protect DataSourceUtils#getConnection(DataSource) against null from DataSource [SPR-15641] #20200
  • Spring Webflux: ServerRequest.queryParam() throws NullPointerException for a query parameter without "=" [SPR-15609] #20168
  • Spring WebFlux fails with 500 if Accept-Language is set to an empty string [SPR-15603] #20162
  • PathPattern "/{foo}.*" should be more specific than "/{foo}" [SPR-15597] #20156
  • Make more obvious when WebTestClient exchangeMutator will not work [SPR-15570] #20129
  • DDoS Spring 5 RouterFunction apps [SPR-15560] #20119
  • {*...} pattern does not work on handler method [SPR-15558] #20117
  • webflux handler fails in case invalid method was requested [SPR-15545] #20104
  • When using ParsingPathMatcher in MVC user should not have to also explicitly set suffix matching [SPR-15303] #19868
  • Spring WebFlux doesn't handle redirect: directives when media type is requested [SPR-15291] #19857