Skip to content

Releases: spring-projects/spring-framework

v5.0.13.RELEASE

31 Mar 08:55

Choose a tag to compare

⭐ 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

  • Update documentation for WebJar support #22615
  • Spring MVC documentation has incorrect WebFlux reference #22380

v4.3.23.RELEASE

31 Mar 08:19

Choose a tag to compare

⭐ 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

13 Feb 08:06

Choose a tag to compare

⭐ 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

17 Jan 14:12

Choose a tag to compare

⭐ 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

17 Jan 14:17

Choose a tag to compare

⭐ 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

  • Error in reference documentation sentence in part 1.8.1. Customizing Beans by Using a BeanPostProcessor [SPR-17556] #22088
  • Typo in SpEL Evaluation Context Sample [SPR-17581] #22113

4.3.22 Release

17 Jan 14:20

Choose a tag to compare

🪲 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

  • Error in reference documentation sentence in part 1.8.1. Customizing Beans by Using a BeanPostProcessor [SPR-17556] #22088
  • Typo in SpEL Evaluation Context Sample [SPR-17581] #22113

5.1.3 Release

17 Jan 14:13

Choose a tag to compare

⭐ 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

17 Jan 14:17

Choose a tag to compare

⭐ 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

  • Improve documentation on reactive types for ResponseEntity [SPR-17400] #21933
  • Improve visibility of GitHub wiki [SPR-17469] #22001
  • Misleading alias definition example in reference documentation, part 1.3.1 [SPR-17536] #22068

4.3.21 Release

17 Jan 14:20

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

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