Skip to content

Releases: spring-projects/spring-framework

v6.2.5

19 Mar 20:08
Compare
Choose a tag to compare

⭐ New Features

  • Make dependencies on AssertJ and JUnit in spring-core-test optional #34612
  • Suggest compilation with -parameters when AspectJAdviceParameterNameDiscoverer fails against ambiguity #34609
  • SseBuilder in ServerResponse should allow empty comment #34608
  • MockServerWebExchange does not allow setting the ApplicationContext on the base class #34601
  • FormHttpMessageConverter should throw HttpMessageNotReadableException when the http form data is invalid #34594
  • Provide a method to retrieve all singleton autowire candidates from the bean factory #34591

🐞 Bug Fixes

  • PathMatchingResourcePatternResolver regression for jar root scanning in 6.2.4 #34607
  • AbstractReactiveTransactionManager throws IllegalStateException when rollback fails after commit attempt #34595
  • Recursively boxing/unboxing nested inline value classes #34592

πŸ“” Documentation

  • MvcUriComponentsBuilder javadocs inaccurately reflects usage of forwarded headers #34615
  • Fix formatting and update links to scripting libraries and HDIV #34603
  • Remove dubious link to MockObjects Web site in reference manual #34593
  • Fix StringUtils#uriDecode Javadoc #34590

πŸ”¨ Dependency Upgrades

  • Upgrade to ASM 9.8 (for early Java 25 support) #34600

❀️ Contributors

Thank you to all the contributors who worked on this release:

@Helmsdown, @dmitrysulman, and @ngocnhan-tran1996

v7.0.0-M3

13 Mar 09:30
Compare
Choose a tag to compare
v7.0.0-M3 Pre-release
Pre-release

⭐ New Features

  • First-class support for BeanRegistrar registration on GenericApplicationContext #34574
  • Support API Versioning in Request Mappings #34566
  • Remove support for Aware interfaces in BeanRegistrar #34562
  • Add support for target type to BeanRegistry #34560
  • Allow chained BeanRegistry registration #34557
  • Remove deprecated rowsExpected property of SqlQuery #34530
  • Upgrade NullAway to 0.12.4 #34525
  • Improve SimpleKey hashing function #34483
  • Revisit MockHttpServletResponse after Servlet API clarifications #34467
  • Refine Kotlin serialization converters/codecs conditions #34438
  • Support open polymorphism with Kotlin Serialization #34433
  • SseEmitter IOException on HTTP Connection Close #33832
  • Remove convention-based annotation attribute override support #28761
  • Support Optional with null-safe and Elvis operators in SpEL expressions #20433
  • Programmatic bean registration with configuration classes #18353

🐞 Bug Fixes

  • Upgrade match check in WebSocketHandlerMapping does not work if handler mapped to "/*" #34503

πŸ“” Documentation

  • Refine Kotlin serialization reference documentation #34437

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2025.0.0-M1 #34577

❀️ Contributors

Thank you to all the contributors who worked on this release:

@pankratz76, @philwebb, and @quaff

v6.2.4

13 Mar 08:48
Compare
Choose a tag to compare

⭐ New Features

  • JettyCoreHttpHandlerAdapter compatibility with Jetty 12.0.17 #34561
  • HandlerMethodValidationException.Visitor should support RequestBody with method parameter constraints #34549
  • Allow ContentResultMatchersDsl matchers for supertypes of the checked type #34542
  • Avoid JarURLConnection resource leak in AbstractFileResolvingResource.exists() #34528
  • Deprecate rowsExpected property of SqlQuery for removal #34526
  • Supply RuntimeHints to an AotContextLoader #34513
  • Deprecate and remove use of UrlPathHelper in ServletWebSocketHandlerRegistry #34508
  • Avoid unnecessary CGLIB processing on configuration classes #34486
  • Inconsistent default class loaders in hint classes #34470
  • Add missing converters to DefaultRestClientBuilder #34439
  • Improve BeanFactory/ObjectProvider to select the only one default candidate among non-default candidates #34432

🐞 Bug Fixes

  • MockCookie.parse() fails to parse custom attribute with a value #34575
  • BeanNotOfRequiredTypeException if @Bean factory method returns null #34543
  • Regression in 6.2.3: No unique bean available for injection point with unresolvable generics #34541
  • GenericConversionService cannot find a converter when converting to a Kotlin list of maps #34535
  • isClientDisconnectedException needs to protect against null input #34533
  • spring boot 3.4.3 + TimedAspect causes thread to hang #34522
  • Missing Partitioned cookie support in reactive HTTP clients #34521
  • DefaultManagedTaskExecutor throws java.lang.UnsupportedOperationException: isShutdown when rejecting tasks #34514
  • FileSystemResource location does not end with slash for RouterFunction check #34509
  • AbstractJackson2HttpMessageConverter not resolving generic type for request body since 6.2.3 #34504
  • Request param handling in HttpRequestValues overrides existing URI variables with same name #34499
  • MockHttpServletResponse - handle multiple values for Content-Language header #34488
  • Endless loop with DataSourceUtils in spring-jdbc #34484
  • MockHttpServletResponse#setHeader does not remove header for null values #34464
  • ContentCachingResponseWrapper.setHeader does not handle null value properly. #34460
  • Component scan fails to find bean candidates in the embedded jar file in META-INF/context.xml for embedded Tomcat application #34446
  • 6.2.0 broke with "Could not register object [@someHash] under bean name 'blabla': there is already object [@sameHash] bound" #34427
  • 503 status code after completing SseEmitter in onTimeout #34426
  • NullPointerException thrown when ConfigurationClassEnhancer creates CGLIB proxy #34423
  • Add onRequest() hook for propagating request from downstream #34388
  • Content-Type response header duplicated for failed StreamingResponseBody return value #34366
  • Task scheduler configured by XML is not eligible for getting processed by all BeanPostProcessors #34015

πŸ“” Documentation

  • Fix typo in Spring MVC error responses documentation #34552
  • Document that Spring Framework 6.x does not yet support JSpecify annotations #34551
  • Fix web and webflux reference links #34517
  • Document default KeyGenerator in spring-cache XSD #34468
  • Fix broken antora task #34454
  • Add @since tag for formField() and formFields in MockHttpServletRequestDsl #34448
  • Improve Javadoc of ObjectProvider to clarify what is unique #34447
  • rest-http-interface example code can't run #34443
  • Add Javadoc since for HandlerMethod(HandlerMethod, Object, boolean) #34431
  • Document wrapping behavior of TestExecutionListener callbacks #34422
  • Cross reference annotation search APIs in Javadoc #34421

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.14.5 #34580
  • Upgrade to Reactor 2024.0.4 #34578

❀️ Contributors

Thank you to all the contributors who worked on this release:

@chenggangpro, @dark2momo, @dmitrysulman, @izeye, @ngocnhan-tran1996, @pankratz76, @quaff, @ryanprayogo, and @vpavic

v6.1.18

13 Mar 08:09
Compare
Choose a tag to compare

⭐ New Features

  • Avoid unnecessary CGLIB processing on configuration classes #34487
  • Inconsistent default class loaders in hint classes #34473

🐞 Bug Fixes

  • DefaultManagedTaskExecutor throws java.lang.UnsupportedOperationException: isShutdown when rejecting tasks #34515
  • Endless loop with DataSourceUtils in spring-jdbc #34497
  • MockHttpServletResponse - handle multiple values for Content-Language header #34491
  • MockHttpServletResponse#setHeader does not remove header for null values #34466
  • ContentCachingResponseWrapper.setHeader does not handle null value properly. #34465
  • Task scheduler configured by XML is not eligible for getting processed by all BeanPostProcessors #34436
  • NullPointerException thrown when ConfigurationClassEnhancer creates CGLIB proxy #34425

πŸ“” Documentation

  • Fix broken antora task #34455

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2023.0.16 #34579

v7.0.0-M2

13 Feb 14:02
Compare
Choose a tag to compare
v7.0.0-M2 Pre-release
Pre-release

⭐ New Features

  • Consider Kotlinx Serialization for JSON as a Jackson/Gson/Jsonb equivalent #34410
  • Improve AnnotatedMethod#equals and HandlerMethod CORS lookups #34375
  • Stop using explicitly aliased value attribute as @Component name #34346
  • Remove Netty 5 support #34345
  • Refine GenericApplicationContext#registerBean nullness #34343
  • Add HttpHeaders copy factory method #34341
  • StandardWebSocketClient should not expose localAddress #34331
  • HierarchicalUriComponents should format Collection URI var values in query param #34311
  • Consistent formatting of IPv6 host in forwarded header handling #34253
  • Allow customization of cookie parsing in Jetty and JDK HttpClient connectors #34081
  • Prevent further configuration once AbstractJdbcCall is compiled #33729

🐞 Bug Fixes

  • AnnotatedElementUtils.getAllAnnotationAttributes(…) missing @Nullable #34394

πŸ“” Documentation

  • Fix Javadoc @code tags #34342

πŸ”¨ Dependency Upgrades

  • Upgrade to Kotlin Coroutines 1.10 #34376
  • Upgrade to Kotlin Serialization 1.8 #34378

❀️ Contributors

Thank you to all the contributors who worked on this release:

@craftmaster2190, @dssievewright, @izeye, @m4tt30c91, and @remeio

v6.2.3

13 Feb 13:17
Compare
Choose a tag to compare

⭐ New Features

  • Add form fields to MockMvc Kotlin DSL #34412
  • Make ProblemDetail implement Serializable #34409
  • Support @MockitoSpyBean at the type level on test classes #34408
  • Expose order values of TestExecutionListener implementations as constants #34404
  • ContentDisposition should match attributes in a case-insensitive fashion #34383
  • Provide access to servletPath in ServletRequestPathUtils #34379
  • Use ConversionService to convert POJO to array for SpEL varargs invocations #34371
  • Provide a more actionable CGLIB error message with native #34370
  • Wrap disconnected client exceptions as AsyncRequestNotUsableException in Servlet container onError callback #34363
  • Support RFC 8441 WebSocket upgrade with HTTP/2 CONNECT #34362
  • Optimize default property editor allocations for bean instance creation #34361
  • Continue with pre-instantiation when current bean is in creation already #34349
  • Allow filtering bean instances returned by ObjectProvider#stream() #34318
  • GenericConversionService finds wrong converter for partially unresolvable generic types #34298
  • Avoid re-creating HandlerMethod unless handler is resolved through the BeanFactory #34277
  • UrlResource should leniently handle HTTP endpoints which do not support HEAD #34217
  • Add API counterpart for handling Fallback and 'defaultCandidate=false' beans #34203
  • Add support for multidimensional arrays #34183
  • Add getters to ServerResponseResultHandler #34066
  • Improve diagnostics when a Bean Override cannot be selected by type #34006
  • Expression performance regression due to missing annotation types on context classes #33948

🐞 Bug Fixes

  • PathMatchingResourcePatternResolver failing against non-jar file in classpath #34417
  • GenericTypeResolver Since 6.2.0, generics cannot be obtained correctly in multi-layer interface inheritance (possible regression of #24963) #34386
  • Test Bean Overrides honor fallback qualifier instead of @Primary semantics #34374
  • HTTP interface client raises IllegalArgumentException if query param name contains a colon #34364
  • Quartz-style Nth Day of Week cron expressions can overflow to other month #34360
  • Component scan fails to find jar entries in WEB-INF/classes with embedded Tomcat #34348
  • Check hasNext when when accessing sessionIds from UserDestinationResult #34333
  • Property binding to Map that implements Iterable no longer works #34332
  • GenericTypeResolver returns EmptyType #34328
  • Duplicate BeanOverrideHandler discovered in @Nested test class hierarchy when upgrading to Spring 6.2.2 #34324
  • AnnotationBeanNameGenerator issues warning about explicitly aliased value attribute #34317
  • Stop assuming that AspectJ Advice has JoinPoint as the first argument #34316
  • Constructor binding fails for simple types List/Map/Array and for nested container combinations #34305
  • Change in BeanFactoryUtils.beanNamesForTypeIncludingAncestors() Behavior in Spring Framework 6.2.x causing ClassCastExceptions #34300
  • Data binding does not filter HTTP headers for constructor binding #34292
  • Escaped character in nested placeholder not detected properly and leads to invalid parts #34289
  • ReflectJvmMapping.getKotlinFunction returns null for Kotlin properties #34284
  • ConfigurationClassEnhancer should explicitly set custom ClassLoader on CGLIB Enhancer (aligned with CglibAopProxy) #34274
  • Connection reset exception from RestTemplate call in Spring Web MVC controller is ignored #34264
  • AsyncExecution fails to detect the return type of an annotated method from an interface with a generic #33957
  • Ensure Locale context is available for WebFlux method validation #33810

πŸ“” Documentation

  • Fix reference to ApplicationContext#getAutowireCapableBeanFactory in reference documentation #34400
  • Clarify component scanning of abstract classes with @Lookup methods #34367
  • Minor update in WebSocket STOMP reference documentation #34353
  • Clarify documentation on the usage of RestClient in POST scenarios without response body #34334
  • Document limitation around the port of localAddress in StandardWebSocketSession #34304
  • Fix Javadoc for field reflection hints #34297
  • Improve Javadoc for SpringProperties.getFlag() #34295
  • Link to current AspectJ Javadoc #34293
  • Update Javadoc for SimpleCommandLinePropertySource #34282
  • Update RestClientException Javadoc to refer to RestClient #34270
  • Document order values for TestExecutionListener implementations #34265
  • Document custom HttpServiceArgumentResolver usage #34227

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.14.4 #34401
  • Upgrade to Reactor 2024.0.3 #34403
  • Upgrade to RSocket 1.1.5 #34402

❀️ Contributors

Thank you to all the contributors who worked on this release:

@JoshuaChen, @Puppy4C, @anaconda875, @brandenclark, @canattofilipe, @dobrosi, @izeye, @jazdw, @khoutz182, @kwondh5217, @pirocraft, @quaff, @remeio, and @tarekmues

v6.1.17

13 Feb 12:23
Compare
Choose a tag to compare

⭐ New Features

  • Improve PathMatcher to PathPatternParser migration in mvc XML configuration #34102
  • Avoid logger serialization behind shared EntityManager proxy #34085

🐞 Bug Fixes

  • Check hasNext when when accessing sessionIds from UserDestinationResult #34397
  • Quartz-style Nth Day of Week cron expressions can overflow to other month #34377
  • Stop assuming that AspectJ Advice has JoinPoint as the first argument #34369
  • ConfigurationClassEnhancer should explicitly set custom ClassLoader on CGLIB Enhancer (aligned with CglibAopProxy) #34358
  • Property binding to Map that implements Iterable no longer works #34338
  • AnnotationBeanNameGenerator issues warning about explicitly aliased value attribute #34330
  • Connection reset exception from RestTemplate call in Spring Web MVC controller is ignored #34278
  • Wrong parentId tracking in FlightRecorderApplicationStartup #34254
  • Ensure AsyncListener#onError does not return until dispatch completes #34196
  • SpEL fails to invoke MethodHandle function reference accepting only varargs #34114

πŸ“” Documentation

  • Clarify component scanning of abstract classes with @Lookup methods #34368
  • Fix broken links in the web reference documentation #34139

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2023.0.15 #34406
  • Upgrade to RSocket 1.1.5 #34405

v7.0.0-M1

23 Jan 14:23
Compare
Choose a tag to compare
v7.0.0-M1 Pre-release
Pre-release

⭐ New Features

  • Remove binary array name handling in ClassUtils.forName() #34291
  • Refine KotlinDetector usages and implementation #34275
  • Introduce a dedicated nullness API #34261
  • Consistent formatting of IPv6 host in forwarded header handling #34253
  • Update runtime hints predicates after GraalVM changes #34239
  • Allow multiple executions of ClientHttpRequestInterceptors #34169
  • Refine null-safety in the spring-webmvc module #34164
  • Refine null-safety in the spring-webflux module #34163
  • Refine null-safety in the spring-web module #34162
  • Refine null-safety in the spring-test module #34161
  • Refine null-safety in the spring-r2dbc module #34160
  • Refine null-safety in the spring-orm module #34159
  • Refine null-safety in the spring-messaging module #34158
  • Refine null-safety in the spring-jms module #34157
  • Refine null-safety in the spring-expression module #34156
  • Refine null-safety in the spring-aop module #34154
  • Refine null-safety in the spring-beans module #34152
  • Refine null-safety in the spring-context module #34151
  • Refine null-safety in the spring-core module #34150
  • Refine null-safety in the spring-jdbc module #34147
  • Specify generic type nullness #34140
  • Deprecate PathExtensionPredicate in functional web frameworks #34103
  • Deprecate mvc XML configuration namespace #34063
  • Remove path mapping options marked as deprecated for removal #34036
  • Deprecate HandlerMappingIntrospector #34019
  • Deprecate use of PathMatcher in web modules #34018
  • Upgrade to Tomcat 11.0 #33916
  • Revisit HttpHeaders implementing the MultiValueMap API #33913
  • Adopt new GraalVM reachability metadata format #33847
  • Built-in support for buffering in RestClient and RestTemplate #33785
  • Replace spring-jcl with regular Apache Commons Logging 1.3 #32459
  • Prepare AOT resource hints for GraalVM changes #31340
  • Deprecate use of several bean factory methods for the same bean in a configuration class #31073
  • Migrate to JSpecify annotations for nullability constraints #28797

πŸ“” Documentation

  • Fix depth for NullAway subsections in reference docs #34267
  • Provide guidelines for NullAway #34202
  • MediaType.ALL docstring display issue #34047
  • Remove documentation for Kotlin Script Templates #34029

πŸ”¨ Dependency Upgrades

  • General upgrade to Jakarta EE 11 APIs #34011
  • Raise JSONassert baseline to 2.0 #33799
  • Upgrade Servlet mock classes to Servlet 6.1 #33749
  • Upgrade ServletHttpHandlerAdapter to rely on Servlet 6.1 ByteBuffer support #33748
  • Upgrade to Hibernate ORM 7.0 (on JPA 3.2) #33750
  • Upgrade to Jetty 12.1.0.alpha1 for EE11 compatibility #34237
  • Upgrade to Kotlin 2.x and set a new related baseline #33629

❀️ Contributors

Thank you to all the contributors who worked on this release:

@izeye and @remeio

v6.2.2

16 Jan 08:51
Compare
Choose a tag to compare

⭐ New Features

  • Track only qualifier annotations in BeanOverrideHandler #34260
  • Remove @FunctionalInterface declaration from BeanOverrideProcessor #34259
  • Refine default filtered headers for web data binding #34182
  • Improve query params in uri KeyValue with HTTP interface client #34176
  • Refine location checks for PathResource #34167
  • Avoid virtual thread pinning in procedure calling #34133
  • Type-level constraint violation should result in ParameterErrors #34105
  • Avoid logger serialization behind shared EntityManager proxy #34084
  • Improve PathMatcher to PathPatternParser migration in mvc XML configuration #34064
  • Support @MockitoBean at the type level on test classes #33925

🐞 Bug Fixes

  • HttpHeadersAssert#doesNotContainsHeaders has a typo #34263
  • Deadlock with background EntityManager bootstrap due to locking in getSingletonFactoryBeanForTypeCheck #34247
  • ApplicationListener no longer invoked for double generic ApplicationEvent with 6.2.1 #34234
  • Nested transaction savepoints are broken in SQL Server #34233
  • Error handling override in DefaultResponseErrorHandler ignored after upgrade to 6.2.0 #34231
  • FileNotFoundException is thrown when using ConfigurationPropertiesScan with Spring Context 6.2.1 #34216
  • BindException declared but not handled by ExceptionHandler #34214
  • @TestBean factory method resolution is incorrect within class hierarchy #34204
  • Bean Override in superclass takes precedence over Bean Override in subclass #34194
  • Ensure AsyncListener#onError does not return until dispatch completes #34192
  • BeanNotOfRequiredTypeException during transaction qualifier resolution in 6.2.1 #34187
  • BeanCurrentlyInCreationException is thrown when multiple threads simultaneously try to create bean #34186
  • DataBinder throws IndexOutOfBoundsException when indexed parameter uses nonconsecutive indices #34145
  • NullPointerException is thrown if WebClient is used with Apache Httpclient and cookies are disabled #34132
  • Wrong parentId tracking in FlightRecorderApplicationStartup #34128
  • PathMatchingResourcePatternResolver is not able to resolve file in SpringBoot Packaged JAR #34126
  • Placeholder resolution no longer considers exact match before resolving the placeholder key #34124
  • DataBinder throws StringIndexOutOfBoundsException for indexed property without nested property path #34121
  • Dependency injection matches wildcards too leniently with 6.2.1 #34119
  • PathMatchingResourcePatternResolver throws FileNotFoundException caused by wrong cache path #34111
  • SpEL fails to invoke MethodHandle function reference accepting only varargs #34109
  • Generic with a base type is no longer resolved to its base if the generic is unresolved #34086
  • DataBinder throws StringIndexOutOfBoundsException for map property without nested property path #34043
  • Fix implicit variable resolution in JSP EvalTag #33945

πŸ“” Documentation

  • Fix inaccuracy in RequestHeaderArgumentResolver Javadoc #34230
  • Document that http.client.requests measure the entire HTTP exchange #34201
  • Misuse of em dash in "Basic Concept" section #34165
  • Fix typo in link #34149
  • Broken syntax in xml sample of "Reference to Other Beans" section #34148
  • Fix minor typo in reference documentation for Kotlin annotations #34134
  • Clarify documentation for the default uri client request observation metric #34116
  • Fix broken links in the web reference documentation #34115
  • Bean creation lazily ignores annotations like @EventListener #34057

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.14.3 #34251
  • Upgrade to Reactor 2024.0.2 #34252

❀️ Contributors

Thank you to all the contributors who worked on this release:

@Mattias-Sehlstedt, @Spanching, @brendenehlers, @izeye, @luozongle01, @micopiira, @ngocnhan-tran1996, @quaff, @rPraml, @remeio, and @scordio

v6.2.1

12 Dec 09:50
Compare
Choose a tag to compare

⭐ New Features

  • Implement toString() in TestBeanOverrideHandler #34072
  • Log alias removal in DefaultListableBeanFactory #34070
  • Log warning when one Bean Override overrides another Bean Override #34056
  • Introduce "unsafeAllocated" flag in TypeHint #34055
  • Cannot assert status reason phrase with MockMvcTester #34016
  • Improve toString for reactive ScheduledTask #34010
  • Optimize sending requests without a body in RestClient and WebClient with Reactor Netty #34003
  • Add missing @Contract annotation to ObjectUtils#isEmpty #33984
  • OptionalValidatorFactoryBean suppresses Hibernate Validator configuration failures too much #33979
  • Support Flux<ServerSentEvent<Fragment>> in WebFlux #33975
  • Update in FragmentsRendering to names of static methods #33974
  • Honor @Fallback semantics for Test Bean Overrides #33924
  • AdvisedSupport.MethodCacheKey should check for logical equality as well as identity #33915
  • Fail with full description for XML diff in XmlExpectationsHelper #33827
  • MapMethodProcessor should only resolve arguments of type Map or the ModelMap hierarchy #33160

🐞 Bug Fixes

  • Support binding from request headers via constructor args #34073
  • Unable to configure custom scheduler for @Scheduled annotation #34058
  • Identical Bean Overrides are silently allowed #34054
  • OOM due to NoTransactionInContextException in reactive pipeline #34048
  • Priority header causes binding exception after upgrade to Spring Framework 6.2.0 #34039
  • @MockitoBean incorrectly injects supertype into subtype field #34025
  • NestedPlaceholder are not recursively resolved if the fallback is a placeholder #34020
  • AOT no longer generates BeanInstanceSupplier signature for a CGLIB proxy with its public type #33998
  • Nested transaction support via savepoints is broken in Oracle database #33987
  • Proxy created with IntroductionInterceptor but without target always throws an exception #33985
  • ApplicationListener no longer invoked for generic ApplicationEvent with 6.2.0 #33982
  • Error handling override in DefaultResponseErrorHandler ignored after upgrade to 6.2.0 #33980
  • BeanCurrentlyInCreationException is thrown when multiple threads simultaneously try to create a FactoryBean #33972
  • HandshakeWebSocketService assumes jakarta websocket is present #33970
  • @Value cases SpringCGLIB$$0 required a bean of type java.lang.String that could not be found in Native compile when migrating to SB 3.4 #33960
  • PathMatchingResourcePatternResolver should not log directory-skip messages at info level #33956
  • Avoid infinite recursion in BeanValidationBeanRegistrationAotProcessor with recursive generics #33950
  • Skip runtime hint registration for validation constraint with missing dependencies #33949
  • Move Kotlin value class unboxing to InvocableHandlerMethod #33943
  • MockReset strategy is no longer honored for @MockitoBean and @MockitoSpyBean #33941
  • TypeDescriptor with recursive generics triggers infinite recursion in ResolvableType.equals/hashCode #33932
  • RestClient does not expose full URI template as attribute #33928
  • Bean Overrides like @MockitoBean and @TestBean should not be allowed on static fields #33922
  • Regression in duplicate beans with different method names #33920

πŸ“” Documentation

  • Fix link to MockMvcBuilders in reference documentation #34031
  • Fix a typo in the filters documentation #33959
  • Document visibility requirements for Bean Overrides #33923
  • Fix typos and link in Observability documentation #33910
  • SpEL documentation contains syntax errors #33907
  • Improve explanation of AOP advice classes that should implement MethodInterceptor #33901
  • Reflect well-known HttpHeaders intent in Javadoc #33886
  • Reflect well-known MediaTypes intent in Javadoc #33754
  • Document support for varargs invocations in SpEL #33332

πŸ”¨ Dependency Upgrades

  • Upgrade to Micrometer 1.14.2 #34050
  • Upgrade to Reactor 2024.0.1 #34051

❀️ Contributors

Thank you to all the contributors who worked on this release:

@Boiarshinov, @CHOICORE, @KNU-K, @izeye, @ngocnhan-tran1996, @scordio, @sonallux, and @youabledev