Releases: spring-projects/spring-framework
Releases · spring-projects/spring-framework
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!
v5.1.13.RELEASE
⭐ New Features
- Support headers with multiple values in ResponseStatusException #24284
- Un-deprecate PathResource (for java.nio.file.Path resolution in createRelative) #24217
- Improve configuration API of ClientCodecConfigurer.CustomCodecs #24201
- Let UriUtils.encode…(…) methods optimize for sources without the need to be encoded #24154
- Support variable resolution of wildcard types #24150
- ContentDisposition cannot parse encoded filename with leading space #24148
🪲 Bug Fixes
- StringDecoder buffer leak related to maxInMemorySize limit #24346
- Cloning a WebClient.Builder instance does not copy strategiesConfigurers #24330
- Unsafe double-checked locking in SpelExpression#compileExpression #24306
- Ensure CORS processing does not add Vary header twice on async requests #24229
- Escape quotes in filename in ContentDisposition.Builder when charset not specified #24224
- ClassUtils.getInterfaceMethodIfPossible overhead in cached methods for SpEL key/condition expressions #24209
- ClientCodecConfigurer drops MultipartHttpMessageWriter.partWriters when mutated #24202
📔 Documentation
- WebFlux documentation states incorrectly that BindingResult is supported after
@RequestBody
#24181
v5.0.16.RELEASE
⭐ New Features
- Cache result of String.getBytes() in ExtendedBeanInfo.PropertyDescriptorComparator #24109
- Avoid substring allocation in StringUtils.replace #24025
- Support for new MySQL 8 error code 3572 #23974
🪲 Bug Fixes
- Unsafe double-checked locking in SpelExpression#compileExpression #24307
- Escape quotes in filename in ContentDisposition.Builder when charset not specified #24230
- SqlRowSet accessor methods should be marked
@Nullable
#24045 - Allow schemaZip Gradle task to execute on MS Windows #23988
- Bean definition override leads to NPE due to inconsistent equality check #23709
- Fix DefaultListableBeanFactory#copyConfigurationFrom #23708
- Synchronized blocks in MethodOverrides are hurting concurrency #23707
📔 Documentation
v4.3.26.RELEASE
⭐ New Features
- Avoid substring allocation in StringUtils.replace #24026
- Support for new MySQL 8 error code 3572 #23975
🪲 Bug Fixes
- Unsafe double-checked locking in SpelExpression#compileExpression #24308
- Allow schemaZip Gradle task to execute on MS Windows #23989
- AbstractRequestLoggingFilter.isIncludeHeaders() declared as protected #23814
- Bean definition override leads to NPE due to inconsistent equality check #23711
- Fix DefaultListableBeanFactory#copyConfigurationFrom #23710
📔 Documentation
- TypeDescriptor#getElementTypeDescriptor does not throw IllegalStateException anymore #24001
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.2.2.RELEASE
⭐ New Features
- Provide default codecs config callback to custom codecs #24118
- Add protobuf MessageConverter #24087
- Refine Throwable handling in spring-websocket #24075
- Improve part content type determination in MockMultipartHttpServletRequest #24074
- Cache result of String.getBytes() in ExtendedBeanInfo.PropertyDescriptorComparator #24072
- Use String.isEmpty() instead of String.equals("") #24052
- IOException "Closed while Pending/Unready" with WebFlux on Jetty #24050
- Avoid substring allocation in StringUtils.replace #24023
- Use
@MessageMapping
method signature to constrain RSocket interaction model #23999 - Avoid indefinite wait to connect in JettyWebSocketClient #23994
- Add queryParam method to MockHttpServletRequestBuilder #23980
- Fallback locale other than the system locale in AbstractResourceBasedMessageSource #23977
- Support for new MySQL 8 error code 3572 #23972
- Simplify ConstructorResolver: do not sort intermediate array #23969
- Avoid store all beanName in ApplicationListenerDetector #23965
- Allow ExchangeStrategies customizations in WebClient #23961
- Use Method::getParameterCount where possible #23949
- Align implementations of StringToUUIDConverter and UUIDEditor #23940
- Use "non-blocking" thread for server-less tests in WebTestClient #23936
- Avoid default Accept header from HttpUrlConnection in RestTemplate with put and delete #23740 #23855
- Reject "%2F" as an invalid sequence in simp messaging usernames #23836
- ApplicationListenerMethodAdapter: gracefully handle beans which are actually NullBean #23784
- Provide orNull extensions for WebFlux ServerRequest #23761
- MockMvc Kotlin DSL should support async dispatch #23758
- RSocketRequestSpec handling metadata values that is a Publisher type #23640
- Preserve the originalMessage when creating an ErrorMessage in MessageBuilder #23417
- Add an option to not include Charset in the final http request ContentType Header #22971
- Allow sending headers with the disconnect frame #22715
- Avoid String concatenation for lookup in StaticMessageSource #22451
- Keys for form data in FormHttpMessageConverter must not be null #22372
- XpathResultMatcher supports Hamcrest Matcher NodeList #2023
- Error details in RestTemplate client and server exceptions #1956
- Preserve "type" parameter in media type for Atom Feed/Entry message conversion #1885
🪲 Bug fixes
- Null pointer when connecting to RSocket #24088
- Regression:
@Inherited
annotations declared in superclass are not recognized anymore #24077 - RSocketRequester allows specifying data more than once #24073
- Revise AbstractBeanDefinition equals implementation #24048
- SqlRowSet accessor methods should be marked
@Nullable
#24042 - Unsafe invocation of .value() on annotations in SynthesizedMergedAnnotationInvocationHandler prevents backwards-compatible additions to annotations #24029
- InMemoryWebSessionStore makes blocking calls to UUID.randomUUID #24027
- ControllerAdviceBean.findAnnotatedBeans() finds proxies as well as their target beans, resulting in double registration #24017
- NullPointerException in JSON codec parsing stream encoded with Jackson Smile #24009
- Fix inappropriate eager init. #23992
- Calling MethodParameter.isOptional() for Kotlin Continuation parameter fails with IndexOutOfBoundsException #23991
- Regression: ControllerAdviceBean#getOrder() causes BeanCreationException for request scoped advice beans #23985
- TestDispatcherServlet ambiguous handler methods with consumes condition and body not required #23978
- AbstractRequestLoggingFilter.getHeaderPredicate is accidentally public #23976
- Reading 'null' JSON response via WebClient fails in v5.2.x #23935
- Allow schemaZip Gradle task to execute on MS Windows #23933
- Regression: AnnotationUtils.findAnnotation no longer finds non-inherited "java." annotations on superclasses #23929
- ResponseCookie to allow leading dot in domain name again #23924
- Regression in spring-test's 5.2.1 MockCookie parse implementation #23911
- useSuffixPatternMatch ignored if pathPrefix is also used #23907
- Ensure InstantFormatter can properly deserialize ISO-formatted dates #23895
- Fix RSocket Fire and forget handling with Kotlin #23866
- SpEL cannot invoke Kotlin synthetic classes #23812
- ShallowETagHeaderFilter overwrites ETag #23775
- Corrupted multipart + correct content-length lead to
Flux<Part>
hanging #23768
📔 Documentation
- [.] is displayed as [bold .] ,need to escape #24108
- Fix consecutive-word duplications in documentation #24089
- Examples in Data Access chapter declare unused JdbcTemplate fields #24085
- Data Access chapter 3.5.1 uses bad pattern #24084
- Documentation flaw for
<tx:method/>
settings #24080 - Fix errors in documentation #24008
- TypeDescriptor#getElementTypeDescriptor does not throw IllegalStateException anymore #23996
- Update docs on ShallowEtagHeaderFilter with regards to ASYNC dispatches #23958
- DEFAULT_PHASE of SmartLifecycle interface has incorrect Javadoc #23956
- Documentation for ForwardedHeaderFilter does not mention important filter order #23954
- Different behavior when injecting beans from local
@Configuration
class vs. external@Configuration
classes #23934 - Correct Javadoc for WebMvcConfigurer...
v5.1.12.RELEASE
⭐ New Features
- Provide default codecs config callback to custom codecs #24119
- Allow ExchangeStrategies customizations in WebClient #24106
- Cache result of String.getBytes() in ExtendedBeanInfo.PropertyDescriptorComparator #24095
- IOException "Closed while Pending/Unready" with WebFlux on Jetty #24060
- Avoid substring allocation in StringUtils.replace #24024
- Support for new MySQL 8 error code 3572 #23973
- WebClient retry() doesn't re-run filters #23909
🪲 Bug fixes
- NullPointerException in JSON codec parsing stream encoded with Jackson Smile #24076
- Revise AbstractBeanDefinition equals implementation #24054
- SqlRowSet accessor methods should be marked @nullable #24044
- ControllerAdviceBean.findAnnotatedBeans() finds proxies as well as their target beans, resulting in double registration #24018
- Ensure InstantFormatter can properly deserialize ISO-formatted dates #23993
- Allow schemaZip Gradle task to execute on MS Windows #23987
- Corrupted multipart + correct content-length lead to Flux hanging #23948
- ShallowETagHeaderFilter overwrites ETag #23941
- ResponseCookie to allow leading dot in domain name #23928
- Regression in spring-test's 5.2.1 MockCookie parse implementation #23920
- useSuffixPatternMatch ignored if pathPrefix is also used #23919
📔 Documentation
- TypeDescriptor#getElementTypeDescriptor does not throw IllegalStateException anymore #23997
- Different behavior when injecting beans from local @configuration class vs. external @configuration classes #23990
- DEFAULT_PHASE of SmartLifecycle interface has incorrect Javadoc #23964
- Correct Javadoc for WebMvcConfigurer#addInterceptors #23913
🔨 Dependency upgrades
- Upgrade to Reactor Californium-SR14 #24038
v5.2.1.RELEASE
⭐ New Features
- Support for limits on input stream processing in WebFlux codecs #23884
- Race condition affecting performance in AbstractJaxb2HttpMessageConverter - JAXBContext creation #23879
- Add RSocketRequester retrieveAndAwaitOrNull extension #23874
- Support unidirectional
@AliasFor
attribute mapping within an annotation #23834 - Allow setting primary flag on BeanDefinitionBuilder #23794
- Introduce sessionAttributeDoesNotExist in RequestResultMatchers #23756
- EventPublishingTestExecutionListener is not included in JUnit 4 and TestNG base classes #23748
- Optimize Connection.setReadOnly(false) in DataSourceUtils.resetConnectionAfterTransaction(…) #23747
- Handling of ResponseStatusException to also include setting of response headers #23741
- Fix OkHttp3ClientHttpRequestFactory shutdown flow #23628
🪲 Bug Fixes
- Reorder date formatting converter in registrar #23893
- Revisit
@Configuration
(proxyBeanMethods = false) with qualified injection points #23887 - Fixing NPE in AbstractNamedValueMethodArgumentResolver #23882
- WebClient onStatus order changed #23880
- TransactionalOperator::transactional does not close the transaction when cancelled #23864
- Remove unused type parameter declarations in XpathRequestMatchers #23860
- Remove unused type parameter declarations in MockMvc #23858
- Repeatable annotation container no longer found on custom composed annotation #23856
- Missing CORS headers defined in SockJS CORS configuration #23843
- Consider target transaction manager for traditional vs reactive transaction decision #23832
- InaccessibleObjectException after upgrading to Framework 5.2 #23829
- Incorrect value of the MediaType.APPLICATION_PROBLEM_JSON_UTF8 #23825
- Autowiring performance degradation due to 5.2's MethodParameter.getParameterType() implementation #23792
- Preserve expires attribute in MockCookie #23769
- Regression: attribute override configured via
@AliasFor
no longer honored in annotation hierarchy #23767 - spring 5.2 dist.zip naming issue #23745
- MockServletContext should treat InvalidPathException like an IOException #23717
📔 Documentation
- Update Spring Boot references in testing documentation #23848
- Fix typo in rsocket doc #23762
- Fixes broken links to dev.java.net #23746
- Fix typo in web-uris doc #23739
- Update documentation for importing projects into Eclipse #23706
🔨 Dependency Upgrades
- Upgrade to Reactor Dysprosium-SR1 #23871
❤️ Contributors
We'd like to thank all the contributors who worked on this release!