Releases: spring-projects/spring-framework
Releases · spring-projects/spring-framework
5.0.12 Release
⭐ New Features
- NettyDataBufferFactory.join should return original buffer as-is in case of a single element (for compatibility with Netty 4.1.32) [SPR-17560] #22092
🪲 Bug Fixes
- 'default-lazy-init' attribute is not processed when XSD validation is disabled [SPR-8335] #12983
- Spring JavaMailSenderImpl does not show proper message when recipient list is empty [SPR-17540] #22072
- Potential resource leak in DataSourceUtils.doGetConnection [SPR-17559] #22091
- SpEL variable evaluation fails with NPE against ConcurrentHashMap [SPR-17565] #22097
- MockHttpServletRequest changes Accept-Language header values [SPR-17566] #22098
- Exporting a lazily initialized bean (which implements SelfNaming and is annotated with ManagedResource annotation) gives IllegalStateException [SPR-17592] #22124
- SpEL, error parsing big InlineMap [SPR-17605] #22137
@Value
Optional<...> field injection fails in case of registered ConversionService [SPR-17607] #22139- ChannelSendOperator does not propagate cancel signal to the server [SPR-17609] #22141
- Cannot convert from Collection to RegularEnumSet [SPR-17619] #22151
- MockMvcResultMatchers.forwardedUrl argument is not declared as nullable [SPR-17623] #22155
- UriComponentsBuilder.toUriString() is broken [SPR-17630] #22161
📔 Documentation
4.3.22 Release
🪲 Bug Fixes
- 'default-lazy-init' attribute is not processed when XSD validation is disabled [SPR-8335] #12983
- Spring JavaMailSenderImpl does not show proper message when recipient list is empty [SPR-17540] #22072
- Potential resource leak in DataSourceUtils.doGetConnection [SPR-17559] #22091
- SpEL, error parsing big InlineMap [SPR-17605] #22137
@Value
Optional<...> field injection fails in case of registered ConversionService [SPR-17607] #22139- Cannot convert from Collection to RegularEnumSet [SPR-17619] #22151
📔 Documentation
5.1.3 Release
⭐ New Features
- ResourceUrlEncodingFilter versioning breaks when URL contains fragment [SPR-17535] #22067
- ReactorNettyTcpClient constructor with callback to initialize TcpClient [SPR-17523] #22055
- WebTestClient.BodySpec.isEmpty() returns false on byte[0] [SPR-17522] #22054
- Expose mapped handler as request attribute in spring-webmvc [SPR-17518] #22050
- Use of Hooks.onOperatorDebug causes performance degradation on 404 errors [SPR-17475] #22007
- The onstatus method of webclient causes a memory leak. [SPR-17473] #22005
- MediaType.parseMediaTypes fails if the input contains a comma [SPR-17459] #21991
- Improve output from logging the map of request mappings [SPR-17450] #21982
- Add abstract base classes for Encoder/Decoder [SPR-17449] #21981
- StandardEvaluationContext does not support concurrent variable access [SPR-17448] #21980
- Support list in IN clause in NamedParameterJdbcTemplate.batchUpdate [SPR-17402] #21935
- Ability to customize Jaxb Marshaller in Jaxb2XmlEncoder [SPR-17388] #21921
- Null response status in WebFilter after controller method [SPR-17368] #21901
- Add RequestPredicate Visitor to WebFlux.fn [SPR-17322] #21856
- Custom web input exceptions in WebFlux [SPR-17232] #21765
🪲 Bug Fixes
- MethodParameter.findParameterIndex() is not thread-safe [SPR-17534] #22066
- Parameter resolution in SpringExtension is not thread-safe [SPR-17533] #22065
- CachingMetadataReaderFactory does not release shared resource cache after context refresh [SPR-17527] #22059
- ForwardedHeaderTransformer double encodes [SPR-17525] #22057
- getBeanNamesForType(ResolvableType) doesn't work for raw singleton instance from
@Bean
method with generic return type [SPR-17524] #22056 - Reserializing a lenient fallback DefaultListableBeanFactory causes an error [SPR-17508] #22040
- HTTP GET from Chrome with WebFlux Rest Controller never completes [SPR-17506] #22038
- Remove Content-Length response header before delegating to WebExceptionHandlers [SPR-17502] #22034
- Illegal reflective access operation warning for toString() on CGLIB proxies [SPR-17500] #22032
- FastByteArrayInputStream.read() wrong return value [SPR-17492] #22024
- Jackson2ObjectMapperBuilder visibilities need to be applied in order [SPR-17489] #22021
- NPE in ClientRequest.attribute(name) when accessing null value [SPR-17486] #22018
- WebClient throws "Only one connection receive subscriber allowed" when response has content but no Content-Type header [SPR-17482] #22014
- NamedParameterJdbcTemplate batchUpdate returns an array of size 1 when the batchArgs passed is an empty array [SPR-17476] #22008
- Type annotations and generic types causing ArrayIndexOutOfBoundsException [SPR-17467] #21999
- WebClient's UriBuilder option should encode path parameters passed into build [SPR-17465] #21997
- Aliases in parameter annotations on a controller interface are not evaluated [SPR-17460] #21992
- ClassUtils.forName fails to load class from ContextTypeMatchClassLoader [SPR-17452] #21984
- ConcurrentModificationException in DispatcherServlet with asynchronous ApplicationEventMulticaster [SPR-17442] #21974
- RestTemplate does not throw exception for custom error codes [SPR-17439] #21971
- ProtobufDecoder assumes number of bytes in delimited format will not be split into chunks [SPR-17429] #21962
📔 Documentation
- Misleading alias definition example in reference documentation, part 1.3.1 [SPR-17536] #22068
- [Docs]: How to customize WebSocket server config with STOMP over WebSocket [SPR-17514] #22046
- Improve visibility of GitHub wiki [SPR-17469] #22001
- Documentation on
@Async
is confusing and biased to XML [SPR-17458] #21990 - Error in Lifecycle Callbacks section [SPR-17453] #21985
5.0.11 Release
⭐ New Features
- SpringFactoriesLoader should tolerate whitespace [SPR-17413] #21946
- StandardEvaluationContext does not support concurrent variable access [SPR-17448] #21980
- The onstatus method of webclient causes a memory leak. [SPR-17473] #22005
- Expose mapped handler as request attribute in spring-webmvc [SPR-17518] #22050
- Enforce use of unpooled data buffers for WebFlux on 5.0.x [SPR-17501] #22033
🪲 Bug Fixes
- Unable to use Kotlin enums with
@Validated
beans [SPR-16931] #21470 - 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
- CssLinkResourceTransformer breaks absolute paths [SPR-17432] #21965
- Configure ResourceUrlProvider in WebFlux and resource chain infrastructure [SPR-17433] #21966
- RestTemplate does not throw exception for custom error codes [SPR-17439] #21971
- ConcurrentModificationException in DispatcherServlet with asynchronous ApplicationEventMulticaster [SPR-17442] #21974
- WebClient's UriBuilder option should encode path parameters passed into build [SPR-17465] #21997
- NamedParameterJdbcTemplate batchUpdate returns an array of size 1 when the batchArgs passed is an empty array [SPR-17476] #22008
- NPE in ClientRequest.attribute(name) when accessing null value [SPR-17486] #22018
- FastByteArrayInputStream.read() wrong return value [SPR-17492] #22024
- Remove Content-Length response header before delegating to WebExceptionHandlers [SPR-17502] #22034
- 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 - ForwardedHeaderTransformer double encodes [SPR-17525] #22057
- CachingMetadataReaderFactory does not release shared resource cache after context refresh [SPR-17527] #22059
- Parameter resolution in SpringExtension is not thread-safe [SPR-17533] #22065
- MethodParameter.findParameterIndex() is not thread-safe [SPR-17534] #22066
📔 Documentation
4.3.21 Release
⭐ 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
⭐ 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
5.1.1 Release
⭐ 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
⭐ 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
4.3.20 Release
⭐ 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
5.1 GA Release
⭐ 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