Releases: spring-projects/spring-framework
Releases · spring-projects/spring-framework
v5.2.7.RELEASE
⭐ New Features
- Implement reliable invocation order for advice within an
@Aspect
#25186 - Performance enhancement in execution of ResponseEntity.of() #25183
- Support for shared GroovyClassLoader in GroovyScriptFactory #25177
- Suggest making a Set.size() > 0 judgement for AbstractApplicationContext.earlyApplicationEvents #25161
- Make use of custom types configurable in YamlProcessor #25152
- Avoid need for default constructor in ContextAnnotationAutowireCandidateResolver subclasses #25131
- ConstructorResolver.resolveConstructorArguments() return value issue #25130
- Introduce serializeToByteArray/deserializeFromByteArray convenience methods #25117
- Custom HTTP Method on MockServerHttpRequest #25109
- Missing null checks in AbstractMessageChannel.addInterceptor/setInterceptors #25088
- Avoid full synchronization in AbstractRefreshableApplicationContext.getBeanFactory() since it can lead to massive thread blocking #25081
- Simplify use of HttpContext in HttpComponentsClientHttpRequestFactory in support of user associated connections #25066
- ResolvableType forClass fails when a type in the generic signature isn't present #25064
- Include timeout unit in shutdown failure logging #25058
- Drop unnecessary intermediate StringBuilder.toString() call in ServerSentEventHttpMessageReader #25024
- Fix concurrency issues in XStreamMarshaller #25017
- Introduce mechanism to discover whether a reactive type registered in ReactiveAdapterRegistry uses deferred computation #24995
- Avoid logging exception for closed session in AbstractSockJsSession #24986
- Include response body in RestTemplate exception when there is no suitable HttpMessageConverter #24964
🪲 Bug Fixes
- ExchangeStrategies custom codec's reader & writer are not registered #25149
- MultiValueMapAdapter.getFirst fails with IndexOutOfBoundsException in case of empty List #25140
- WebSphereUowTransactionManager causes exception for PROPAGATION_SUPPORTS when timeout is specified #25132
- Avoid ClassCastException on IllegalArgumentException when invoking sync get cache method #25110
- DefaultServerRequestBuilder does not respect attributes when building the ServerRequest #25106
- Fix race condition in WriteResultPublisher between subscription and error in publishError #25096
- Jackson message converters and codecs do not respect character encoding in canRead/canWrite #25076
- DefaultClientResponseBuilder empty logPrefix when creating a DefaultClientResponse based on another #25069
- HttpHeaders equals may return false without comparing actual content #25034
- Fix race condition in WriteResultPublisher between subscription and completion in publishComplete #24989
📔 Documentation
- Javadoc for hibernate5 OpenSessionInViewFilter mentions FlushMode.NEVER #25158
- Document that the Map backing a MapPropertySource should not contain null values #25142
- Javadoc for JdbcOperations.batchUpdate should mention that negative values are possible #25138
- Fix URI pattern example in webflux.adoc #25137
- Document how reactive transactions work for cancellation in 5.2 and how it will work in 5.3 #25091
- Document whether code can rely on specific subclasses of HttpClientErrorException/HttpServerErrorException being thrown from DefaultResponseErrorHandler #25067
- Fix SpelEvaluationException with example code #25045
- javadoc: remove a comment documented a limitation on
@Lookup
annotation #25044 - Document all predefined variables from ApplicationContext available in SpEL expressions #25037
- Document ReactiveTransactionManager support in reference manual #25036
- Document ReactiveTransactionManager support #25030
- Change to placeholder value in XML is not reevaluated at runtime #25022
- Add missing
@PathVariable
declarations in examples in webmvc.adoc #25006
🔨 Dependency Upgrades
- Upgrade to Reactor Dysprosium-SR8 #25210
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.1.16.RELEASE
⭐ New Features
- Performance enhancement in execution of ResponseEntity.of() #25197
- Support for shared GroovyClassLoader in GroovyScriptFactory #25181
- Make use of custom types configurable in YamlProcessor #25154
- Missing null checks in AbstractMessageChannel.addInterceptor #25089
- Avoid full synchronization in AbstractRefreshableApplicationContext.getBeanFactory() since it can lead to massive thread blocking #25083
- Fix concurrency issues in XStreamMarshaller #25026
- Avoid logging exception for closed session in AbstractSockJsSession #25003
🪲 Bug Fixes
- AbstractJackson2HttpMessageConverter does not respect character encoding in canRead/canWrite #25185
- ExchangeStrategies custom codec's reader & writer are not registered #25150
- MultiValueMapAdapter.getFirst fails with IndexOutOfBoundsException in case of empty List #25141
- WebSphereUowTransactionManager causes exception for PROPAGATION_SUPPORTS when timeout is specified #25135
- Avoid ClassCastException on IllegalArgumentException when invoking sync get cache method #25118
- DefaultServerRequestBuilder does not respect attributes when building the ServerRequest #25107
- Fix race condition in WriteResultPublisher between subscription and error in publishError #25102
- HttpHeaders equals may return false without comparing actual content #25035
- Fix race condition in WriteResultPublisher between subscription and completion in publishComplete #25004
🔨 Dependency Upgrades
- Upgrade to Reactor Californium-SR19 #25211
v5.2.6.RELEASE
⭐ New Features
- Cache meta-annotations for stereotype check in AnnotationBeanNameGenerator #24980
- Use WebsocketServerSpec in ReactorNettyRequestUpgradeStrategy #24959
- Warn about unsupported "/path/**/other" patterns with WebFlux PathPatternParser #24958
- Allow override of data binding in ModelAttributeMethodArgumentResolver #24947
- Rid pointless wrapping with BufferedInputStream from class reading #24946
- ResponseStatusExceptionResolver ignores ResponseStatusException headers #24944
- Caching of autowire candidate metadata for lazy beans #24904
- Put a limit on the size of DefaultSingletonBeanRegistry#suppressedExceptions #24902
- Prevent setting parent bean factory to self #24900
- Honor overridden AcceptHeaderLocaleContextResolver.getDefaultLocale() #24871
- Improve performance of StringUtils.deleteAny() #24870
- 'args' argument of 'JdbcTemplate#query(String, Object[], RowCallbackHandler)' method should be marked
@Nullable
#24839 - Improve usage of ByteArrayOutputStream/ByteArrayInputStream #24805
- Simplify conversion of ByteArrayOutputStream to String #24785
- Optimize sortPostProcessors() in PostProcessorRegistrationDelegate #24776
- Reduce byte array allocations in StompEncoder #24694
🪲 Bug Fixes
- ConflictingBeanDefinitionException on repeated index evaluation #24978
- Reintroduce synthesized annotation attribute value caching #24970
- MockHttpServletRequest should not strip brackets from IPV6 address supplied via Host header #24916
- Memory leak in MimeTypeUtils LRUCache #24886
- Annotation searches potentially synthesize annotations unnecessarily #24861
- Connection created by SingleConnectionDataSource with suppressClose=true always returns isClosed=false even if the target connection is closed #24853
- DefaultListableBeanFactory.getBean(Class) throws NoSuchBeanDefinitionException on existing bean if getBean(Class) previously tried before registration #24852
- Cannot dispatch without an AsyncContext when an expected error is thrown #24835
- Duplicate Vary headers after enabling CORS filter #24829
- Make it possible to run Spring MVC without kotlin-reflect #24828
- Recursively copy directory with symbolic link #24823
- Connection leak with WebClient retrieve().toBodilessEntity() #24788
- Using UriComponentsBuilder.cloneBuilder does not copy uriVariables #24782
- Fix empty domain handling in ResponseCookie #24758
- Illegal reflective access warning for interface-based lookup method injection #24657
- Annotation retrieval performance degradation after 5.2 #23905
📔 Documentation
- HttpHeaders#getETagValuesAsList(String) does not document IAE #24950
- Describe that bean disposal is unsupported for the beans created by FactoryBean #24948
- Deprecate AnnotationFilter.NONE (since MergedAnnotations always filters java.lang.* annotations) #24932
- Improve Javadoc #24908
- Fix Javadoc in PathPattern #24841
- Document default constructor as fallback for multiple non-
@Autowired
constructors #24838 - Document precedence for
@DynamicPropertySource
#24837 - Documentation: AbstractBeanDefinition.getBeanClass() vs BeanFactory.getType #24816
- Fix typos and improve readability in Webflux documentation #24781
- Document role of views within Spring application #24777
- Clarify how to avoid favoring path extensions as well as deprecation warnings #24642
🔨 Dependency Upgrades
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.1.15.RELEASE
⭐ New Features
- Caching of autowire candidate metadata for lazy beans #24973
- Put a limit on the size of DefaultSingletonBeanRegistry#suppressedExceptions #24972
- Honor overridden AcceptHeaderLocaleContextResolver.getDefaultLocale() #24876
🪲 Bug Fixes
- MockHttpServletRequest should not strip brackets from IPV6 address supplied via Host header #24917
- Connection created by SingleConnectionDataSource with suppressClose=true always returns isClosed=false even if the target connection is closed #24858
- DefaultListableBeanFactory.getBean(Class) throws NoSuchBeanDefinitionException on existing bean if getBean(Class) previously tried before registration #24855
- Recursively copy directory with symbolic link #24826
- Illegal reflective access warning for interface-based lookup method injection #24791
- Using UriComponentsBuilder.cloneBuilder does not copy uriVariables #24779
- Implementing interface in abstract class does not expose parameter annotations #24754
- Missing nullability declarations for package web.socket.server.jetty #24750
- MediaTypeNotSupportedStatusException seems unused #24748
- Spring generates huge callstack for async requests #24692
- addCandidateComponentsFromIndex should create ScannedGenericBeanDefinitions #24639
🔨 Dependency Upgrades
- Upgrade to Reactor Californium-SR18 #24893
v5.0.17.RELEASE
⭐ New Features
- Honor overridden AcceptHeaderLocaleContextResolver.getDefaultLocale() #24877
- Consistent ROLE_INFRASTRUCTURE declarations for internal configuration classes #24515
🪲 Bug Fixes
- MockHttpServletRequest should not strip brackets from IPV6 address supplied via Host header #24918
- Connection created by SingleConnectionDataSource with suppressClose=true always returns isClosed=false even if the target connection is closed #24859
- DefaultListableBeanFactory.getBean(Class) throws NoSuchBeanDefinitionException on existing bean if getBean(Class) previously tried before registration #24856
- Recursively copy directory with symbolic link #24827
- Using UriComponentsBuilder.cloneBuilder does not copy uriVariables #24780
- Missing nullability declarations for package web.socket.server.jetty #24751
- MediaTypeNotSupportedStatusException seems unused #24749
- addCandidateComponentsFromIndex should create ScannedGenericBeanDefinitions #24640
- Cycle in LogAdapter.Log4jLog initialization within log appender #24451
📔 Documentation
- Update advice on RestTemplate #24504
v4.3.27.RELEASE
⭐ New Features
- Backport of ContentDisposition fixes to HttpHeaders #24580
- Consistent ROLE_INFRASTRUCTURE declarations for internal configuration classes #24516
🪲 Bug Fixes
- MockHttpServletRequest should not strip brackets from IPV6 address supplied via Host header #24919
- Connection created by SingleConnectionDataSource with suppressClose=true always returns isClosed=false even if the target connection is closed #24860
- DefaultListableBeanFactory.getBean(Class) throws NoSuchBeanDefinitionException on existing bean if getBean(Class) previously tried before registration #24857
v5.2.5.RELEASE
⭐ New Features
- Do not cache multipart mime types in MimeTypeUtils LRU cache #24767
- Declare proxyBeanMethods=false in JmsBootstrapConfiguration #24752
- Usage of java 14 record throws java.lang.UnsupportedOperationException: This feature requires ASM8_EXPERIMENTAL #24722
- Non-public Kotlin beans can't be instantiated #24712
- Avoid ClassCastException for CoyoteInputStream in TomcatHttpHandlerAdapter #24707
- Avoid unnecessary sorting in AbstractHandlerMethodMapping #24704
- Improve performance of StringUtils#cleanPath #24674
- Optimize global advisor registration in ProxyFactoryBean #24669
- Short circuit check in SynthesizedMergedAnnotationInvocationHandler.isVisible() #24664
- Ignore empty domain string in ResponseCookie #24663
- Remove UTF-8 charset parameter from Content-Type in SseEmitter #24632
- Jaxb2XmlDecoder Does Not Throw Codec Exception For Invalid XML #24622
- TransactionInterceptor constructors should accept a generic TransactionManager #24612
- Relax GraalVM checks in DefaultParameterNameDiscoverer #24600
- Multipart/related support in Spring Webclient #24582
- Consider supporting PreFlight requests and CORS in Servlet Functional Endpoints #24564
- Support for byte-range requests in Servlet Functional endpoints #24562
- Provide a mechanism to configure integration tests with a dynamic property source #24540
- Improve ConcurrentLruCache performance #24469
- Reduce Class[] garbage when creating proxies #24221
- implements
checkNotModified
forServerRequest
#24173 - AbstractSockJsSession exception when handling message with closed session #23828
🪲 Bug Fixes
- Missing nullability declarations for package web.socket.server.jetty #24745
- MediaTypeNotSupportedStatusException seems unused #24743
- MessagingRSocket incorrectly tries to release entire input stream on channel interaction #24741
- MimeTypeUtils performance degradation #24671
- RSocket MetadataEncoder expands the routes incorrect #24656
- Spring generates huge callstack for async requests #24652
- CodecException (from JSON conversion) in RestController is not mapped to 400 but 500 (SB 2.2.5 & Kotlin) #24646
- addCandidateComponentsFromIndex should create ScannedGenericBeanDefinitions #24638
- ShallowETagHeaderFilter (still) overwrites ETag and Content-Length #24635
- Invalid JSON in requests now causes 500 instead of 400 #24630
- Invalid request results in 500 INTERNAL ERROR instead of 400 BAD REQUEST (with Lombok and Kotlin) #24610
- Distributions no longer deployed #24605
- UnknownHttpStatusCodeException is missing the response body #24595
- Implementing interface in abstract class does not expose parameter annotations #24127
📔 Documentation
- Clarify name generation responsibility for PropertySourceFactory implementations #24757
- Improve Javadoc in
@Configuration
#24753 - Improve Javadoc in AnnotatedElementUtils #24740
- Clarify behavior for WebClient statusHandlers #24736
- Enhance Spring Core documentation, section 1.9.2. Using
@Autowired
#24711 - Do not mention credentials as enabled by default in CorsRegistry #24691
- Improve Javadoc in AutoProxyRegistrar #24688
- Improve javadoc in RollbackRuleAttribute regarding nested classes #24682
- Fix typo in testing.adoc #24627
- Polish ReactorResourceFactory #24620
- Fix typo in reference manual #24597
- Add more lambda expressions in data-access code examples #24398
🔨 Dependency Upgrades
- Upgrade to JUnit 5.6.1 #24762
- Upgrade to Reactor Dysprosium SR6 #24725
- Upgrade to Groovy 2.5.10 (for JDK 14 compatibility) #24719
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.2.4.RELEASE
⭐ New Features
- BlockHoundIntegration for spring-core #24581
- Configure quiet period for shutting down Netty resources #24538
- Consistent ROLE_INFRASTRUCTURE declarations for internal configuration classes #24509
- Raise log level for exceptions from EntityManager close call #24501
- ExecutorConfigurationSupport to allow millisecond precision for await termination period #24496
- Improve assertion message in PersistenceExceptionTranslationInterceptor #24484
- BigDecimal in multi-value request body deserializes differently than single-value #24479
- If controller method has produces="/" in 5.2.3 response is 500 instead of 406 #24466
- SseEmitter cannot format text/plain if StringHttpMessageConverter is not configured #24465
- Support command line arguments with an empty value #24464
- AbstractJackson2HttpMessageConverter + Jackson 2.10: handle ValueInstantiationException properly #24455
- Compatibility with JDK 14 #24453
- Avoid opaque to hierarchical reset in UriComponentsBuilder when input is null #24444
- Add Informix to supported database products for procedure calls #24443
- Solve ReflectPermission issue in sandbox security policy model for repackaged CGLIB ReflectUtils #24420
- Allow non-standard HttpStatus in reactive ServerHttpResponse #24400
- Allow customizing default Smile codec via CodecConfigurer #24382
- Simplify getCache() method in CaffeineCacheManager #24376
- Expose property for handling of Ping frames with Reactor Netty WebSocket client and server #24367
- Simplify getParsedSql() method in NamedParameterJdbcTemplate #24358
- Provide control over formatting of request in HttpWebHandlerAdapter #24352
- Add hook-point to exclude imported configuration classes #24175
- Jackson2Decoder fails to determine correct target type from default interface method with a generic type #23791
- Extra empty line a["\n"] messages from ActiveMQ STOMP broker #23713
- Add a way to combine more than one AnnotationIntrospector in Jackson2ObjectMapperBuilder instead of overriding it #22830
- Add unique number to WebFlux log prefix for Reactor Netty server #22039
🪲 Bug Fixes
- NullPointerException in MockHttpServletRequestBuilder for URI string with no protocol #24556
- BeanPostProcessorChecker warning due to missing infrastructure role on ProxyTransactionManagementConfiguration #24508
- spring-aspects has a compile dependency on spring-orm #24491
- AbstractJackson2Decoder is not aware of jackson's non-blocking parser only supporting UTF-8 #24489
- MockRestServiceServer reset does not clear failedRequests #24486
- Prevent unnecessary refresh for InjectionMetadata.EMPTY #24485
- "Status and headers already sent" ISE exception from Reactor Netty on WebSocket upgrade #24475
- The new Encoder.encodeValue and Decoder.decode methods in spring 5.2 do not provide access to the Context #24441
- Cycle in LogAdapter.Log4jLog initialization within log appender #24440
- Negative byte values not properly converted to unsigned int in URI encoding #24413
- ServerSentEventHttpMessageReader maps null when event has comment only. #24389
- Nested annotations no longer supported in ASM-based annotation processing #24375
- Explicit Content-Type Header in WebClient is overwritten by ResourceHttpMessageWriter #24366
- Avoid setting special Content-* response headers in TomcatHeadersAdapter #24361
- IncompatibleClassChangeError encountered on execution of compiled SPEL expressions #24357
- JSON decoding error parsing stream encoded with Jackson Smile #24198
📔 Documentation
- Improve documentation for
@Autowired
/@Value
in@Configuration
classes #24585 - Fix formatting in webflux-webclient.adoc #24578
- Clarify AbstractResourceBasedMessageSource.setCacheMillis vs java.util.ResourceBundle #24563
- Correct Ant-style Patterns example in documentation #24552
- Fix javadoc in DependencyDescriptor #24551
- Correct formatting of MessageSource example in documentation #24531
- Update advice on RestTemplate #24503
- Upgrade to Spring Asciidoctor Extensions 0.4.0.RELEASE #24481
- Fix typo in StringUtils class #24471
- Polish documentation format #24460
- Fix Asciidoctor Warnings #24427
- Reconsider recommended connection pools #24405
- Improve default experience of data binding from HTML date and time input fields #24370
- Document supported characters for identifiers in SpEL expressions #24359
- Document that
@Validated
results in the use of a proxy and warn users about the side-effects #24338 - Deprecate use of path extensions in request mapping and content negotiation #24179
🔨 Dependency Upgrades
- Upgrade to RSocket 1.0.0-RC6 #24482
- Upgrade to ASM 7.3 #24438
- Upgrade to Reactor Dysprosium SR5 #24355
- Upgrade to JUnit Jupiter 5.6 #24299
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.1.14.RELEASE
⭐ New Features
- Consistent ROLE_INFRASTRUCTURE declarations for internal configuration classes #24514
- Raise log level for exceptions from EntityManager close call #24513
- BigDecimal in multi-value request body deserializes differently than single-value #24487
- Add Informix to supported database products for procedure calls #24449
- Solve ReflectPermission issue in sandbox security policy model for repackaged CGLIB ReflectUtils #24448
🪲 Bug Fixes
- AbstractJackson2Decoder is not aware of jackson's non-blocking parser only supporting UTF-8 #24542
- Cycle in LogAdapter.Log4jLog initialization within log appender #24450
- JSON decoding error parsing stream encoded with Jackson Smile #24412
- Avoid setting special Content-* response headers in TomcatHeadersAdapter #24387
- IncompatibleClassChangeError encountered on execution of compiled SPEL expressions #24362
📔 Documentation
- Clarify AbstractResourceBasedMessageSource.setCacheMillis vs java.util.ResourceBundle #24584
- Update advice on RestTemplate #24505
- Polish documentation format #24462
🔨 Dependency Upgrades
- Upgrade to Reactor Californium SR16 #24527
v5.2.3.RELEASE
⭐ New Features
- Update throwable to SQLException #24337
- Update CORS support #24327
- Improve exception message in AopContext.currentProxy() #24321
- Trim line in LineInfo only once #24310
- Merge getCallableInterceptors and getDeferredResultInterceptors #24305
- Optimize SimpleAliasRegistry hasAlias implementation #24295
- Improve ExposeInvocationInterceptor exception message #24293
- Add ContentLength support for InputStreamResource created in ResourceHttpMessageConverter and ResourceDecoder #24292
- StringHttpMessageConverter addDefaultHeaders() should check media type for wildcard before setting it into headers #24283
- Add fast path for ClassUtils.hasMethod #24282
- Support headers with multiple values in ResponseStatusException #24261
- Remove quality parameter from chosen media type in WebFlux responses #24239
- Remove Content-* response headers before error handling in WebFlux #24238
- Reuse InputStream for ResourceRegionHttpMessageConverter #24214
- Un-deprecate PathResource (for java.nio.file.Path resolution in createRelative) #24211
- Simplify AdvisedSupport.removeAdvisor() #24205
- Add BeanPropertyRowMapper.newInstance(mappedClass, conversionService) #24195
- Short-circuit in AbstractBeanDefinition.equals() #24185
- Expose local address in reactive ServerHttpRequest #24174
- Improve exception message for mixed explicit and implicit aliases with
@AliasFor
#24168 - Hoist constant result of SerializableTypeWrapper.unwrap() out of loop #24167
- Add "application/*+xml" as supported media type to XML decoders #24164
- Hoist Class.getName() from String concatenation to dodge an issue related to profile pollution #24153
- Let UriUtils.encode…(…) methods optimize for sources without the need to be encoded #24152
- Add accessor for logPrefix in ClientResponse to allow tying a ClientRequest to a ClientResponse #24146
- Support variable resolution of wildcard types #24145
- WebTestClientExtensions.expectBody doesn't work for generic types #24142
- Add firstElement to CollectionUtils #24135
- Improve configuration API of ClientCodecConfigurer.CustomCodecs #24124
- Introduce BeanNameGenerator based on fully qualified class name #24114
- ContentDisposition cannot parse encoded filename with leading space #24112
- Add option to encode MultiValueMap of query params #24043
- AbstractMessageConverterMethodProcessor results in 406 with "Accept: /" when
@RequestMapping
produces condition determined the content type #23287 - Allow testing with any value for Content-Type and Accept header in MockHttpServletRequestBuilder #2079
🪲 Bug Fixes
- StringDecoder buffer leak related to maxInMemorySize limit #24339
- Cloning a WebClient.Builder instance does not copy strategiesConfigurers #24329
- SimpleKey contains invalid hashcode on deserialization when parameters include an enum #24320
- ServerSentEventHttpMessageReader does not respect maxInMemorySize and is always limited to 256k messages #24312
- Unsafe double-checked locking in SpelExpression#compileExpression #24265
- Ensure CORS processing does not add Vary header twice on async requests #24223
- Escape quotes in filename in ContentDisposition.Builder when charset not specified #24220
- ClassUtils.getInterfaceMethodIfPossible overhead in cached methods for SpEL key/condition expressions #24206
- ClientCodecConfigurer drops MultipartHttpMessageWriter.partWriters when mutated #24194
- Regression: annotation searches no longer handle exceptions #24188
- WebFlux may send incomplete response if the session persistence fails #24186
- Fix RSocketRequester Coroutines extensions #24166
- Regression: prototype
@ControllerAdvice
beans should not be cached #24157 - Ensure MvcUriComponentsBuilder generates correct URL from type-level mapping without leading slash #24143
- Annotation scanning in enclosing class hierarchy results in NoClassDefFound #24136
- ReadCancellationException does not play well with
onErrorContinue
#24125 - StringHttpMessageConverter lost a fix that assumed charset UTF-8 for "application/json" #24123
- Regression: default values for implicit aliases no longer honored in MergedAnnotations #24110
- Functional Bean Definition DSL for noarg functions #23395
📔 Documentation
- Docs should warn against split URL handling across handler mappings #24304
- [spring expression doc] symbolic logical operators #24276
- Fix example in RSocket docs #24245
- MappingJackson2MessageConverter: fix javadoc typo #24200
- Fix typos in DataBufferUtils Javadocs #24160
- TOC generated by asciidoc for core-beans.adoc is truncated #24132
- WebFlux documentation states incorrectly that BindingResult is supported after
@RequestBody
#22997
🔨 Dependency Upgrades
- Upgrade to Reactor Dysprosium SR3 #24349
- Upgrade to Gradle build scan plugin 3.1.1 #24252
- Upgrade to nohttp plugin 0.0.4.RELEASE #24251
❤️ Contributors
We'd like to thank all the contributors who worked on this release!