Releases: spring-projects/spring-framework
Releases · spring-projects/spring-framework
v5.0.13.RELEASE
⭐ New Features
- Revisit XML schema handling for consistent local vs external resolution #22529
- JdbcTemplate.extractOutputParameters should preserve order of parameters #22493
- Avoid duplicate call to findAnnotations in DefaultListableBeanFactory.findAnnotationOnBean #22355
🪲 Bug Fixes
- Avoid duplicate registration of
@ControllerAdvice
implementing both RequestBodyAdvice and ResponseBodyAdvice #22684 - Locale inconsistently resolves to null for invalid input value #22658
- Jackson2ObjectMapperBuilder's modulesToInstall function does not eventually override the default configuration #22625
- Last-Modified Date format changed with SPR-17571 to not have double digit day #22611
- ServletWebRequest.getHeaderValues throwing NPE when header information is not available #22550
- Events extending from PayloadApplicationEvent and implementing an interface fail to match
@EventListener
argument #22470 - AbstractTraceInterceptor causes problems when implemented in Kotlin #22456
- DefaultConversionService fails to properly convert an Object[] to a int[] #22414
- IllegalArgumentException when overriding empty 'excludeFilters' array on
@ComponentScan
#22407 - RestTemplate adds duplicate accept header information [SPR-16690] #22401
@Transactional
beans not getting proxied when being initialized during failed circular reference attempt #22377- ApplicationContext.refresh() causes stale listeners to be added to ApplicationEventMulticaster #22374
- ApplicationListenerMethodAdapter does not find
@Ordered
annotation for dynamic proxies #22353
📔 Documentation
v4.3.23.RELEASE
⭐ New Features
- ResourceUrlEncodingFilter versioning breaks when URL contains fragment [SPR-17535] #22552
- Revisit XML schema handling for consistent local vs external resolution #22530
- JdbcTemplate.extractOutputParameters should preserve order of parameters #22494
- HandlerInterceptorAdapter should honor ordering #22434
- Avoid duplicate call to findAnnotations in DefaultListableBeanFactory.findAnnotationOnBean #22356
🪲 Bug Fixes
- Avoid duplicate registration of
@ControllerAdvice
implementing both RequestBodyAdvice and ResponseBodyAdvice #22686 - Jackson2ObjectMapperBuilder's modulesToInstall function does not eventually override the default configuration #22624
- Events extending from PayloadApplicationEvent and implementing an interface fail to match
@EventListener
argument #22471 - DefaultConversionService fails to properly convert an Object[] to a int[] #22415
@Transactional
beans not getting proxied when being initialized during failed circular reference attempt #22376- ApplicationListenerMethodAdapter does not find
@Ordered
annotation for dynamic proxies #22352 - RestTemplate adds duplicate accept header information #22320
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.1.5.RELEASE
⭐ New Features
- Fix for ScriptUtils failure when '--' occurs inside a multi-line comment on the same line as '*/' #22392
- InjectionPoint autowiring throws exception for @resource beans autowired by name #22359
- PathMatchingResourcePatternResolver may double-wrap jar: URLs #22346
- mariadb-java-client 2.4.0 productName changed: breaks Spring Batch #22344
- SpringEL should not throw IllegalAccessError for invalid assignment #22336
- Avoid duplicate call to findAnnotations in DefaultListableBeanFactory.findAnnotationOnBean #22318
- Load-time weaving support for WildFly 13+ #22297
- org.springframework.web.client.HttpMessageConverterExtractor#extractData fails to detect empty body when content-length header is missing #22265
- Deprecate JibxMarshaller #22249
- DefaultExceptionHandler logs warning cannot be disabled [SPR-17628] #22159
- Support for null literal in Jackson2JsonDecoder [SPR-17510] #22042
🪲 Bug Fixes
- IllegalArgumentException when overriding empty 'excludeFilters' array on @componentscan #22405
- @transactional beans not getting proxied when being initialized during failed circular reference attempt #22370
- CompositeLog does not log exceptions at ERROR level #22364
- ApplicationContext.refresh() causes stale listeners to be added to ApplicationEventMulticaster #22325
- ApplicationListenerMethodAdapter does not find @ordered annotation for dynamic proxies #22307
- NPE in AbstractHandlerMethodMapping when trace logging is enabled and a handler's class loader does not provide package information #22306
- Incomplete fix for MethodParameter.isOptional() ArrayIndexOutOfBoundsException #22303
- Wrap DecodingException thrown by WebFlux functional endpoints #22290
- Fix truncation of response body in AbstractMessageConverterMethodProcessor #22287
- DataBuffer.write(CharSequence charSequence, Charset charset) fails on empty string with java.lang.IllegalStateException: Current state = RESET, new state = FLUSHED #22262
- Add tests for SpringBeanContainer (Hibernate ORM integration) and fix the behavior when requesting named beans #22260
- ServerSentEventHttpMessageReader leaves a leading space on field decoding [SPR-17511] #22043
📔 Documentation
- Enhance documentation for @PostConstruct/PreDestroy and @required #22348
- Improve spring-context-indexer documentation #22339
- Testing chapter of reference manual refers to old version of PetClinic #22288
- Correct issues in Spring MVC section #22282
- Clarify documentation about Spring MVC views rendered with Jackson versus @JSONVIEW #22280
- Spring MVC documentation has incorrect WebFlux reference #22270
- Use try-with-resources in Spring 5 documentations #22269
- Document effect of @DirtiesContext when used with constructor injection [SPR-17654] #22183
- Add note to Scope documentation on SimpleTransactionScope [SPR-17651] #22180
- Document effect of preemptive timeouts on transactional tests [SPR-17647] #22176
- Document synchronous use of WebClient [SPR-17644] #22173
- Error in CORS WebFilter documentation of web-reactive #19841
- Improve Kotlin documentation #22400
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
5.1.4 Release
⭐ New Features
- FormHttpMessageConverter should support non-String form values [SPR-17645] #22174
- spring-jcl routes logging inefficiently against SLF4J with log4j-to-slf4j setup [SPR-17586] #22118
- Allow java.time types for setting the Last-Modified header [SPR-17571] #22103
- StringHttpMessageConverter should assume charset UTF-8 for application/json [SPR-17568] #22100
- NettyDataBufferFactory.join should return original buffer as-is in case of a single element (for compatibility with Netty 4.1.32) [SPR-17560] #22092
- Use Netty's optimized UTF-8 encoding if available [SPR-17558] #22090
- Equals checks to MediaType.ALL should not be affected the presence of parameters [SPR-17550] #22082
- Reactive HTTP header adapters don't print header values in toString [SPR-17546] #22078
- Add ability to retrieve associated ClientRequest from WebClientResponseException [SPR-17087] #21624
🪲 Bug Fixes
- HttpHeaders.EMPTY is not immutable [SPR-17633] #22164
- UriComponentsBuilder.toUriString() is broken [SPR-17630] #22161
- MethodParameter.isOptional() fails with ArrayIndexOutOfBoundsException [SPR-17629] #22160
- MockMvcResultMatchers.forwardedUrl argument is not declared as nullable [SPR-17623] #22155
- Cannot convert from Collection to RegularEnumSet [SPR-17619] #22151
- TomcatHttpHandlerAdapter is not aware of Server[Request|Response]Wrapper [SPR-17611] #22143
- ChannelSendOperator does not propagate cancel signal to the server [SPR-17609] #22141
@Value
Optional<...> field injection fails in case of registered ConversionService [SPR-17607] #22139@Profile
mishandles "not" operand mixed with "&" [SPR-17606] #22138- SpEL, error parsing big InlineMap [SPR-17605] #22137
- Composed RequestPredicates have invalid string representation [SPR-17594] #22126
- Regression: IllegalStateException: Ambiguous handler methods is thrown for explicit HEAD mapping [SPR-17593] #22125
- Exporting a lazily initialized bean (which implements SelfNaming and is annotated with ManagedResource annotation) gives IllegalStateException [SPR-17592] #22124
- MockHttpServletRequest changes Accept-Language header values [SPR-17566] #22098
- SpEL variable evaluation fails with NPE against ConcurrentHashMap [SPR-17565] #22097
- WebClient logs "Only one connection receive subscriber allowed" when response status is an error [SPR-17564] #22096
- Potential resource leak in DataSourceUtils.doGetConnection [SPR-17559] #22091
- HibernateTransactionManager (unintentionally) bound to Hibernate 5.2 SharedSessionContractImplementor [SPR-17557] #22089
- Spring JavaMailSenderImpl does not show proper message when recipient list is empty [SPR-17540] #22072
- 'default-lazy-init' attribute is not processed when XSD validation is disabled [SPR-8335] #12983
📔 Documentation
- Incorrect snippet of code in documentation [SPR-17601] #22133
- Duplicate word in spring docs [SPR-17597] #22129
- Typo in SpEL Evaluation Context Sample [SPR-17581] #22113
- Error in reference documentation sentence in part 1.8.1. Customizing Beans by Using a BeanPostProcessor [SPR-17556] #22088
- Doc: Support for validation in WebFlux.fn [SPR-17401] #21934
- Improve docs on concurrent sending with direct use of WebSocket API [SPR-12886] #17484
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