Skip to content

Releases: spring-projects/spring-framework

v5.2.5.RELEASE

24 Mar 12:00
Compare
Choose a tag to compare

⭐ 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 for ServerRequest #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

25 Feb 17:15
Compare
Choose a tag to compare

⭐ 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

25 Feb 16:51
Compare
Choose a tag to compare

⭐ 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

14 Jan 10:10
Compare
Choose a tag to compare

⭐ 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!

Read more

v5.1.13.RELEASE

14 Jan 09:25
Compare
Choose a tag to compare

⭐ 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

14 Jan 10:57
Compare
Choose a tag to compare

⭐ 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

  • TypeDescriptor#getElementTypeDescriptor does not throw IllegalStateException anymore #23998
  • Correct Javadoc for WebMvcConfigurer#addInterceptors #23926

v4.3.26.RELEASE

14 Jan 13:07
Compare
Choose a tag to compare

⭐ 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

03 Dec 09:26
Compare
Choose a tag to compare

⭐ 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...
Read more

v5.1.12.RELEASE

03 Dec 08:42
Compare
Choose a tag to compare

⭐ 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

02 Nov 08:44
Compare
Choose a tag to compare

⭐ 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!