Skip to content

Releases: spring-projects/spring-framework

4.3.21 Release

17 Jan 14:20
Compare
Choose a tag to compare

⭐ New Features

  • SpringFactoriesLoader should tolerate whitespace [SPR-17413] #21946
  • Expose mapped handler as request attribute in spring-webmvc [SPR-17518] #22050

🪲 Bug Fixes

  • ExceptionHandlerExceptionResolver started to log on WARN level [SPR-17383] #21916
  • MethodValidationPostProcessor still validates FactoryBean methods on CGLIB proxies [SPR-17386] #21919
  • Spring logs a nasty looking stack trace for unhandled classpath URL [SPR-17417] #21950
  • ResourceUrlEncodingFilter does not work with HttpServletRequestWrapper [SPR-17421] #21954
  • RestTemplate does not throw exception for custom error codes [SPR-17439] #21971
  • NamedParameterJdbcTemplate batchUpdate returns an array of size 1 when the batchArgs passed is an empty array [SPR-17476] #22008
  • FastByteArrayInputStream.read() wrong return value [SPR-17492] #22024
  • Reserializing a lenient fallback DefaultListableBeanFactory causes an error [SPR-17508] #22040
  • getBeanNamesForType(ResolvableType) doesn't work for raw singleton instance from @Bean method with generic return type [SPR-17524] #22056

📔 Documentation

  • Misleading alias definition example in reference documentation, part 1.3.1 [SPR-17536] #22068

5.1.2 Release

17 Jan 14:13
Compare
Choose a tag to compare

⭐ New Features

  • Relax handler supports checks in WebFlux RequestMappingHandlerAdapter [SPR-17420] #21953
  • SpringFactoriesLoader should tolerate whitespace [SPR-17413] #21946
  • Review DataBuffer handling code for proper release in case of error or cancellation [SPR-17408] #21941
  • Allow binding all MultipartFile instances as handler method argument [SPR-17405] #21938
  • Make InvocableHandlerMethod.getMethodArgumentValues from private to protected. [SPR-17404] #21937
  • Remove transfer-encoding check in EncoderHttpMessageWriter and related workaround in ReactorServerHttpResponse [SPR-17393] #21926

🪲 Bug Fixes

  • Configure ResourceUrlProvider in WebFlux and resource chain infrastructure [SPR-17433] #21966
  • CssLinkResourceTransformer breaks absolute paths [SPR-17432] #21965
  • SpringBeanContainer for Hibernate 5 does not deal with NoSuchBeanDefinitionException [SPR-17430] #21963
  • ResourceUrlEncodingFilter does not work with HttpServletRequestWrapper [SPR-17421] #21954
  • Spring logs a nasty looking stack trace for unhandled classpath URL [SPR-17417] #21950
  • Cannot overwrite content-type response header with WebFlux [SPR-17415] #21948
  • LogFormatUtils.formatValue does not leniently handle toString() exceptions [SPR-17397] #21930
  • CORS detection for reactive stack on tomcat/netty is broken [SPR-17396] #21929
  • WebFlux.fn puts wrong type of HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE [SPR-17395] #21928
  • MethodValidationPostProcessor still validates FactoryBean methods on CGLIB proxies [SPR-17386] #21919
  • ExceptionHandlerExceptionResolver started to log on WARN level [SPR-17383] #21916
  • ForwardedHeaderFilter does not respect Servlet forwarding [SPR-16983] #21521
  • Unable to use Kotlin enums with @Validated beans [SPR-16931] #21470

📔 Documentation

  • Improve guidance on working with and releasing DataBuffer's [SPR-17409] #21942
  • Improve documentation on reactive types for ResponseEntity [SPR-17400] #21933

5.1.1 Release

17 Jan 14:13
Compare
Choose a tag to compare

⭐ New Features

  • Set BEST_MATCHING_HANDLER_ATTRIBUTE in WebFlux.fn [SPR-17367] #21900
  • How does DeferredResult get the value after the timeout [SPR-17364] #21897
  • Replace context by provider() in Kotlin bean DSL [SPR-17352] #21886
  • ServerWebInputException is throw each time Http request with mandatory request parameters is handled. [SPR-17338] #21872
  • MonoToListenableFutureAdapter.cancel problems [SPR-17336] #21870
  • ClassUtils could use long form of Class.forName [SPR-17333] #21867
  • HeaderResultMatchers susceptible to slight variations in the date format [SPR-17330] #21864
  • BasicAuthorizationInterceptor should add its header conditionally [SPR-17326] #21860
  • Quartz job bean can't have constructor with injected parameters [SPR-17323] #21857
  • Sanity checks for HTTP range requests [SPR-17318] #21851
  • Unnecessary sort in AbstractApplicationEventMulticaster [SPR-17307] #21840
  • Support for removeHeader in MockHttpServletRequest [SPR-17295] #21828
  • Improve WebFlux performance for header management [SPR-17250] #21783
  • WebTestClient.bindToRouterFunction(...) with exception handler not working [SPR-17239] #21772
  • Add autowiring support to SpringBeanJobFactory [SPR-14471] #19040
  • Convenient programmatic bean retrieval with qualifiers [SPR-8891] #13532

🪲 Bug Fixes

  • MethodValidationPostProcessor validates FactoryBean methods for which validation is not applicable [SPR-17374] #21907
  • MockHttpServletRequest doesn't reset InputStream/Reader on setContent [SPR-17373] #21906
  • "This feature requires ASM7" on JDK11 on nested classes [SPR-17371] #21904
  • WebTestClient throws IllegalArgumentException for invalid Parameters [SPR-17363] #21896
  • Comparators.nullsLow creates wrong kind of NullSafeComparator [SPR-17357] #21891
  • BeanFactory.getBeanProvider stream does not include beans from parent context [SPR-17356] #21890
  • MockAsyncContext not found. Did request wrapper not delegate startAsync? [SPR-17353] #21887
  • Nested DeferredImportSelector are not detected properly anymore [SPR-17351] #21885
  • AnnotationMetadata.getAnnotationAttributes inconsistency for empty array in ASM implementation [SPR-17347] #21881
  • Integer overflow while uploading big files (> 2.1 GB) using webflux [SPR-17345] #21879
  • SpringBeanContainer should use returned instance from BeanFactory after initializing [SPR-17332] #21866
  • ApplicationListener is missing from Collection returned by getApplicationListeners() if it was added after the multicaster was initialised [SPR-17324] #21858
  • MockCookie parsing fails if cookie does not include attributes [SPR-17321] #21854
  • HTTP 404 for static resources with last modified = 0L (breaks Docker images build with Jib) [SPR-17320] #21853
  • Required attribute 'RouterFunctions.request' is missing [SPR-17304] #21837
  • java.lang.AbstractMethodError: org.apache.commons.logging.LogFactory.setAttribute(..) [SPR-17302] #21835
  • MockHttpServletResponse doesn't propagate Content-Language response header [SPR-17284] #21817
  • Cyclic bean methods cause IllegalArgumentException instead of BeanCurrentlyInCreationException [SPR-17358] #19778

📔 Documentation

  • Misleading description in Autowired javadoc [SPR-17299] #21832

5.0.10 Release

17 Jan 14:17
Compare
Choose a tag to compare

⭐ New Features

  • DataBufferUtils does not release DataBuffer on error cases [SPR-16782] #21322
  • Support for removeHeader in MockHttpServletRequest [SPR-17295] #21828
  • Unnecessary sort in AbstractApplicationEventMulticaster [SPR-17307] #21840
  • Sanity checks for HTTP range requests [SPR-17318] #21851
  • HeaderResultMatchers susceptible to slight variations in the date format [SPR-17330] #21864
  • ServerWebInputException is throw each time Http request with mandatory request parameters is handled. [SPR-17338] #21872

🪲 Bug Fixes

  • UriComponentsBuilder.uriComponents doesn't properly clone unmodifiable queryParams [SPR-17256] #21789
  • MockHttpServletResponse doesn't propagate Content-Language response header [SPR-17284] #21817
  • Concurrency Exception during bean configuration related to not thread safe getBeanPostProcessor access [SPR-17286] #21819
  • HTTP 404 for static resources with last modified = 0L (breaks Docker images build with Jib) [SPR-17320] #21853
  • ApplicationListener is missing from Collection returned by getApplicationListeners() if it was added after the multicaster was initialised [SPR-17324] #21858
  • Integer overflow while uploading big files (> 2.1 GB) using webflux [SPR-17345] #21879
  • AnnotationMetadata.getAnnotationAttributes inconsistency for empty array in ASM implementation [SPR-17347] #21881
  • MockAsyncContext not found. Did request wrapper not delegate startAsync? [SPR-17353] #21887
  • Comparators.nullsLow creates wrong kind of NullSafeComparator [SPR-17357] #21891
  • MethodValidationPostProcessor validates FactoryBean methods for which validation is not applicable [SPR-17374] #21907
  • DataBufferUtils#join could leak buffers in case of error from the source [SPR-17025] #21563

📔 Documentation

  • Typo on ServletUriComponentsBuilder javadoc comments [SPR-17255] #21788
  • Javadoc for BufferingClientHttpRequestFactory is missing the end of a sentence [SPR-17261] #21794
  • Misleading description in Autowired javadoc [SPR-17299] #21832

4.3.20 Release

17 Jan 14:20
Compare
Choose a tag to compare

⭐ New Features

  • Support for removeHeader in MockHttpServletRequest [SPR-17295] #21828
  • Sanity checks for HTTP range requests [SPR-17318] #21851

🪲 Bug Fixes

  • HTTP 404 for static resources with last modified = 0L (breaks Docker images build with Jib) [SPR-17320] #21853
  • MockAsyncContext not found. Did request wrapper not delegate startAsync? [SPR-17353] #21887
  • MethodValidationPostProcessor validates FactoryBean methods for which validation is not applicable [SPR-17374] #21907

📔 Documentation

  • Typo on ServletUriComponentsBuilder javadoc comments [SPR-17255] #21788
  • Javadoc for BufferingClientHttpRequestFactory is missing the end of a sentence [SPR-17261] #21794
  • Misleading description in Autowired javadoc [SPR-17299] #21832

5.1 GA Release

17 Jan 14:14
Compare
Choose a tag to compare

⭐ New Features

  • GenericApplicationContext.registerBean should support non-default constructors [SPR-17292] #21825
  • Expose more AbstractBeanDefinition methods in BeanDefinition [SPR-17275] #21808
  • Add a BeanFactory#getBeanProvider Kotlin extension [SPR-17274] #21807
  • BeanValidationPostProcessor(afterInitialization=true) fails for cglib proxied bean [SPR-17273] #21806
  • Ordered list access for BeanFactory.getBeanProvider(), superseding ObjectProvider [SPR-17272] #21805
  • Truncate large response bodies when logging in RequestResponseBodyMethodProcessor [SPR-17254] #21787
  • Use doOnDiscard to free internally queued data buffers [SPR-17246] #21779
  • Bean definition DSL does not generate unique bean names [SPR-17242] #21775
  • Autowiring inconsistency: @Qualifier works with HashMap but not with Map [SPR-17197] #21731
  • Expose the remote IP in ServerHttpRequest and WebSocketSession [SPR-17192] #21727
  • Provide matched pattern information in WebFlux fn [SPR-17098] #21635
  • Initial GraalVM native images (Substrate VM) support [SPR-16991] #21529
  • SchedulerFactoryBean should not override explicit "org.quartz.scheduler.instanceName" setting with bean name [SPR-16884] #21423
  • DataBufferUtils does not release DataBuffer on error cases [SPR-16782] #21322
  • Allow configuration for DEFAULT_FRAME_MAX_SIZE of WebSocketSession on WebFlux with Netty [SPR-16228] #20776

🪲 Bug Fixes

  • Concurrency Exception during bean configuration related to not thread safe getBeanPostProcessor access [SPR-17286] #21819
  • getBean(Class) lookup performance degredation [SPR-17282] #21815
  • Proper way to dispose of Response [SPR-17268] #21801
  • UriComponentsBuilder.uriComponents doesn't properly clone unmodifiable queryParams [SPR-17256] #21789
  • PathPatternPredicate still changes variables after failed AndPredicate [SPR-17210] #21743
  • JUnit Jupiter @Nested class cannot share enclosing class's ApplicationContext if nested class is deemed to be a configuration candidate [SPR-16595] #21136

📔 Documentation

  • Javadoc for BufferingClientHttpRequestFactory is missing the end of a sentence [SPR-17261] #21794
  • Typo on ServletUriComponentsBuilder javadoc comments [SPR-17255] #21788
  • Add example of WebClient timeout settings [SPR-17241] #21774

5.1 RC3 Release

17 Jan 14:14
Compare
Choose a tag to compare

⭐ New Features

  • Add support for empty router in RouterFunctionDsl [SPR-17247] #21780
  • Externally managed mode for ReactorResourceFactory [SPR-17243] #21776
  • Polish capitalisation of units on DataSize and javadoc of DataUnit [SPR-17240] #21773
  • HibernateTransactionManager should lazily acquire JDBC Connection (like HibernateJpaDialect) [SPR-17216] #21749
  • Prevent instantiation of NamedParameterBatchUpdateUtils [SPR-17215] #21748
  • Optimize for Flux to/from Mono conversions by Reactor [SPR-17203] #21736
  • Be more defensive in UrlResource about cleaning the path [SPR-17198] #21732
  • Test instances should not be proxied in the TestContext framework [SPR-9478] #14113

🪲 Bug Fixes

  • Kotlin DSL (RouterFunctionDsl) doesn't support RenderingResponse in router function [SPR-17244] #21777
  • ReactorHttpResources should clear HttpResources in global mode [SPR-17199] #21733
  • Java 10: "Illegal method name" when test functions in Kotlin contain spaces in name [SPR-17137] #21674
  • Spring internal configuration classes can no longer use @EventListener [SPR-17160] #19660

📔 Documentation

  • Document default EmbeddedValueResolver support for property placeholders [SPR-17212] #21745
  • Fix grammar in JavaDoc for fully qualified links [SPR-17208] #21741

5.0.9 Release

17 Jan 14:17
Compare
Choose a tag to compare

⭐ New Features

  • Usage of ClassLoader.loadClass() in ConfigurationClassParser [SPR-17253] #21786
  • Spring WebSocket Stomp tomcat cluster with user destinations sends message to wrong subscriber. [SPR-17228] #21761
  • Support both filters and views in AbstractJackson2HttpMessageConverter [SPR-17209] #21742
  • WebFlux JSON request body garbled under heavy load [SPR-17193] #21728
  • Consistent warn logging for handled exceptions [SPR-17178] #21714
  • ClassUtils optimization for less expensive static initialization [SPR-17169] #21705
  • BindingAwareConcurrentModel should properly react to null value [SPR-17141] #21678
  • DataBufferUtils#takeUntilByteCount checks one extra buffer but does not release it [SPR-17118] #21655
  • Initialize pre-filled HashMaps with large enough capacity (e.g. in HttpMethod) [SPR-17105] #21642
  • Avoid unnecessary synthesizable annotation processing [SPR-16933] #21472

🪲 Bug Fixes

  • 'ListBasedXMLEventReader.getElementText()' doesn't work [SPR-17233] #21766
  • EL1072 when evaluating compiled expression using method SpelExpression.getValue(Object rootObject, Class expectedResultType) [SPR-17229] #21762
  • Kotlin inner class nested configuration causes IndexOutOfBoundsException [SPR-17222] #21755
  • WebClient does not write Mono.empty() request body [SPR-17220] #21753
  • Compiled elvis operator does not work correctly when default value is a complex expression [SPR-17214] #21747
  • HeaderAssertions.lastModified/expires takes an int value but it should be long [SPR-17194] #21729
  • SimpleAliasRegistry.hasAlias does not properly resolve multiple chained aliases [SPR-17191] #21726
  • UriComponentsBuilder does not encode "$" properly [SPR-17168] #21704
  • @Scheduled task runs twice on bean with target-class scoped proxy (when injected) [SPR-17166] #21702
  • CheckboxTag incorrectly processing hidden field through RequestDataValueProcessor [SPR-17147] #21684
  • Annotations on generic superclass methods not found by AnnotationUtils [SPR-17146] #21683
  • ContextPathCompositeHandler returns 200 when no path found [SPR-17144] #21681
  • SchedulerAccessor needs to catch primary key violation on reschedule (due to Quartz race condition) [SPR-17114] #21651
  • WebTestClient ignores WebSessionManager bean [SPR-17094] #21631
  • Classification of ClassCastExceptions doesn't work in JDK 11 (OpenJDK) [SPR-17093] #21630
  • Inconsistent handling of dependent lifecycle beans in DefaultLifecycleProcessor [SPR-16901] #21440

📔 Documentation

  • Removed Jackson view property "renderedAttributes" still mentioned in Spring Framework docs [SPR-17182] #21718
  • Rewrite 1.10.8. PDF, Excel paragraph in Spring Framework Documentation [SPR-17180] #21716
  • Fix broken links and address warnings for JavaDoc [SPR-17174] #21710
  • Generate "Use" pages in aggregated Spring API documentation (Javadoc) [SPR-17173] #21709
  • Incorrect CORS code fragment in Spring Framework Documentation [SPR-17167] #21703
  • Preserve-publish-order is mentioned in documentation of 5.0.x [SPR-17106] #21643
  • Incorrect query param code fragment in Spring Framework Documentation [SPR-17104] #21641
  • Revise BeanFactory vs ApplicationContext section in reference docs [SPR-17095] #21632

4.3.19 Release

17 Jan 14:21
Compare
Choose a tag to compare

⭐ New Features

  • Consistent warn logging for handled exceptions [SPR-17178] #21714
  • Support both filters and views in AbstractJackson2HttpMessageConverter [SPR-17209] #21742

🪲 Bug Fixes

  • AbstractJackson2HttpMessageConverter incorrectly logs at WARN level after upgrading to Jackson 2.9 [SPR-16947] #21486
  • ConcurrentReferenceHashMap does not enforce visibility of cached EntrySet [SPR-16994] #21532
  • Map injection fails to find bean produced with @Bean when additional method with same name exists [SPR-16999] #21537
  • AOP and use of redirect view can lead to unbounded caching in AbstractAutoProxyCreator [SPR-17045] #21583
  • Classification of ClassCastExceptions doesn't work in JDK 11 (OpenJDK) [SPR-17093] #21630
  • SchedulerAccessor needs to catch primary key violation on reschedule (due to Quartz race condition) [SPR-17114] #21651
  • CheckboxTag incorrectly processing hidden field through RequestDataValueProcessor [SPR-17147] #21684
  • @Scheduled task runs twice on bean with target-class scoped proxy (when injected) [SPR-17166] #21702
  • SimpleAliasRegistry.hasAlias does not properly resolve multiple chained aliases [SPR-17191] #21726
  • Compiled elvis operator does not work correctly when default value is a complex expression [SPR-17214] #21747
  • EL1072 when evaluating compiled expression using method SpelExpression.getValue(Object rootObject, Class expectedResultType) [SPR-17229] #21762

📔 Documentation

  • Doc: AsyncConfigurer causes dependencies to be created early [SPR-16945] #21484
  • Update documentation references to Number/Currency/PercentStyleFormatter [SPR-17022] #21560
  • Incorrect Class reference in documentation [SPR-17042] #21580
  • Revise BeanFactory vs ApplicationContext section in reference docs [SPR-17095] #21632
  • Removed Jackson view property "renderedAttributes" still mentioned in Spring Framework docs [SPR-17182] #21718

5.1 RC2 Release

17 Jan 14:14
Compare
Choose a tag to compare

⭐ New Features

  • SmartLifecycle should provide default methods [SPR-17188] #21723
  • SimpleClientHttpResponse.close() does not call close() on URLConnection.getInputStream() if SimpleClientHttpResponse.getBody() was not called before [SPR-17181] #21717
  • Add JettyResourceFactory [SPR-17179] #21715
  • Avoid argument resolution overhead for no-arg factory methods [SPR-17171] #21707
  • Use default methods on Smart/GenericApplicationListener [SPR-17163] #21699
  • Introduce DataSize type [SPR-17154] #21691
  • BeanFactoryUtils.transformedBeanName() creates a lot of GC pressure [SPR-17151] #21688
  • Exception hierarchy under WebClientResponseException for the WebClient [SPR-17145] #21682
  • More easily set the order on DefaultSimpUserRegistry [SPR-17142] #21679
  • limitExceeded is never reset in ConcurrentWebSocketSessionDecorator [SPR-17140] #21677
  • Detect GraalVM with system property in SerializableTypeWrapper [SPR-17136] #21673
  • BeanDefinition-aware BeanPostProcessors should clear cache in case of bean definition reset [SPR-17126] #21663
  • ScriptUtils.containsSqlScriptDelimiters does not take into account escaped quotes [SPR-17120] #21657
  • SharedEntityManagerCreator should support deferred access to StoredProcedureQuery output parameters [SPR-17115] #21652
  • Add support for adding cookies as headers in MockHttpServletResponse [SPR-17110] #21647
  • MockHttpSession doesn't publish session binding event for replaced attributes [SPR-17109] #21646
  • Override JsonPathAssertions "equals" method to fail always [SPR-17091] #21628
  • Improve/unify debug logging at BeanDefinitionReader and BeanFactory level [SPR-17090] #21627
  • Minor performance improvements for 5.1 [SPR-17074] #21612
  • CookieWebSessionIdResolver doesn't recognise https scheme when used with ForwardedHeaderFilter [SPR-17072] #21610
  • Support a custom CorsConfigurationSource [SPR-17067] #21605
  • Relax explicit TestContextBootstrapper resolution [SPR-17006] #21544
  • Add ExchangeFilterFunction that enforces limit on the response size [SPR-16989] #21527
  • Make it easier to tidy up the resources used by a WebClient [SPR-16963] #21501
  • Make it possible to disable Scheduled job via cron expression [SPR-16858] #21397
  • Check scheme in WebUtils#isSameOrigin [SPR-16362] #20909
  • Exception hierarchy under HttpClientException and HttpServerException for the RestTemplate [SPR-15404] #19967
  • ResponseEntity factory method inferring FOUND / NOT_FOUND from Optional [SPR-13281] #17871

🪲 Bug Fixes

  • LocalVariableTableParameterNameDiscoverer runs into UnsupportedOperationException in ClassVisitor.visitNestMemberExperimental() [SPR-17103] #21640
  • Classpath scanning on inner classes fails against JDK 11 bytecode level [SPR-17096] #21633

📔 Documentation

  • Mention asynchronous JPA bootstrapping in the reference documentation [SPR-17189] #21724
  • Update docs on RestTemplate to indicate it's superceded by WebClient [SPR-16993] #21531