Releases: spring-projects/spring-framework
v7.0.0-M2
β 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
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@craftmaster2190, @dssievewright, @izeye, @m4tt30c91, and @remeio
v6.2.3
β 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 implementsIterable
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 aliasedvalue
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 customClassLoader
on CGLIBEnhancer
(aligned withCglibAopProxy
) #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
β 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 customClassLoader
on CGLIBEnhancer
(aligned withCglibAopProxy
) #34358- Property binding to
Map
that implementsIterable
no longer works #34338 AnnotationBeanNameGenerator
issues warning about explicitly aliasedvalue
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
v7.0.0-M1
β 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 theMultiValueMap
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:
v6.2.2
β New Features
- Track only qualifier annotations in
BeanOverrideHandler
#34260 - Remove
@FunctionalInterface
declaration fromBeanOverrideProcessor
#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
throwsIndexOutOfBoundsException
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
throwsStringIndexOutOfBoundsException
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
throwsStringIndexOutOfBoundsException
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
β€οΈ 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
β New Features
- Implement
toString()
inTestBeanOverrideHandler
#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 toObjectUtils#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 withouttarget
always throws an exception #33985 ApplicationListener
no longer invoked for genericApplicationEvent
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
#33941TypeDescriptor
with recursive generics triggers infinite recursion inResolvableType.equals/hashCode
#33932- RestClient does not expose full URI template as attribute #33928
- Bean Overrides like
@MockitoBean
and@TestBean
should not be allowed onstatic
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
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@Boiarshinov, @CHOICORE, @KNU-K, @izeye, @ngocnhan-tran1996, @scordio, @sonallux, and @youabledev
v6.1.16
β New Features
- Log alias removal in
DefaultListableBeanFactory
#34071 - OptionalValidatorFactoryBean suppresses Hibernate Validator configuration failures too much #34041
- Update UndertowHttpHandlerAdapter to dispatch #33969
π Bug Fixes
- HandshakeWebSocketService assumes jakarta websocket is present #34023
π Documentation
π¨ Dependency Upgrades
v6.2.0
β New Features
- Update UndertowHttpHandlerAdapter to dispatch #33885
- Refine
@Contract
Javadoc to mentionthis
andnew
return values #33849 - AOT processing for bean validation does not consider cascaded and container element constraints #33842
- Avoid repeated resolving of singleton beans through
@Lazy
proxy #33841 - Regiser runtime hints for
@TestBean
fully-qualified method names #33836 - Introduce support for custom reason in
@DisabledInAotMode
#33833 - Use optimistic locking where possible in
ResponseBodyEmitter
#33831 - Revise cookies support with Apache HTTP Components in WebClient and WebTestClient #33822
- Remove the
pure
attribute from@Contract
#33820 - Introduce
@CheckReturnValue
annotation #33818 - ResourceHttpRequestHandler throwing IllegalArgumentException if resource doesn't end with slash breaks some third-party libraris #33815
- Provide first-class virtual thread option on
ThreadPoolTaskExecutor
/ThreadPoolTaskScheduler
#33807 HttpServiceProxyFactory
should omit optional@RequestParam
if converted fromnull
to empty string #33794- Reactor Netty response should not buffer the full response #33781
- Relax the visibility of MockMVC DSL constructors #33778
- Support Publisher to InputStream conversion #31677
π Bug Fixes
MockReset
should be honored without@Mockito[Spy]Bean
fields #33829- Test Bean Overrides do not honor
@Primary
semantics #33819 - Bean Overrides cannot reliably override beans created by a
FactoryBean
with generics #33811 - Bean Overrides for certain
FactoryBean
use cases no longer work #33800 @MockitoBean
,@MockitoSpyBean
, &@TestBean
do not work with@DirtiesContext
"before method" modes #33783- Deprecate exchangeTimeout and refactor readTimeout in ReactorClientHttpRequestFactory #33782
π Documentation
- Revise documentation for SpEL
PropertyAccessor
andIndexAccessor
APIs regarding ordering #33862 - Document UrlHandler Servlet and reactive filters #33784
- Improve documentation for
SpelCompilerMode
#33223
π¨ Dependency Upgrades
- Upgrade to ASM 9.7.1 (for early Java 24 support) #33821
- Upgrade to Micrometer 1.14.0 #33876
- Upgrade to Reactor 2024.0.0 #33878
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@Hejow, @OlegDokuka, and @lucky8987
v6.1.15
β New Features
- Use UriUtils to process static resource paths #33859
- Prefer modified resources over the originals in TestCompiler #33850
- Improve iteration methods in native headers to MultiValueMap adapters #33823
- Deregister empty
Cache
fromCacheManager
#33813 - Rename
aopAvailable
constants inTransactionSynchronizationUtils
for better GraalVM native image support #33796 - Load-time weaving support for WildFly 24+ #33728
π Bug Fixes
- DefaultClientRequestObservationConvention generates wrong uri tag when missing path #33867
- HttpComponentsClientHttpRequestFactory setReadTimeout not working with httpclient 5.4 #33806
- HttpHeaders.writeableHttpHeaders(new HttpHeaders(readOnlyHttpHeaders)) is not writeable #33789
- RestClient exchange methods are not nullable #33779
- Throw
SpelParseException
for unsupported character inSpelExpressionParser
#33767 - DefaultMessageListenerContainer reports incorrect jms.process.message count #33758
- Autowiring fails if multiple non-highest
@Priority
beans exist with same priority #33733 - Jackson2Decoder leaks on WebClient timeout #33731
- DefaultServerRequestObservationConvention throws when response status is zero #33725
- Aspect executed twice -
@AfterThrowing
#33704 - parts w/o filename in
Content-Disposition
header are not cleaned from temp folder (skipped byStandardServletMultipartResolver
) #33511
π Documentation
- Resources link points to wrong section of reference guide #33882
- Remove mentions of Joda-Time support #33881
- SimpleAsyncTaskExecutor blocks calling thread when concurrencyLimit set #33873
- Fix formatting issue in validation section of reference guide #33871
- Fix typo in reference documentation #33865
- Fix XML bean reference example in reference manual #33855
- Fix a typo in documentation #33846
- Numerous warnings when injecting dependencies into configuration that implements CachingConfigurer #33834
@Async
documentation should not suggest deprecated classes #33805- Document that circular dependencies should be avoided in AOT mode #33786
- Inconsistent Lifecycle Management with Virtual Threads in Spring Boot Async Configuration #33780
- Fix incorrect regex rendering in MVC controller documentation #33766
- Improve documentation for
allowEagerInit
parameter ingetBeanNamesForType()
#33740 - Fix Javadoc in ReactorNetty2ResourceFactory #33735
- Document options for handling Date/Time parsing and formatting issues with JDK 20+ #33151
π¨ Dependency Upgrades
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@Torres-09, @ZLATAN628, @hosamaly, @izeye, @kunaljani1100, @ngocnhan-tran1996, and @wilkinsona
v6.2.0-RC3
β New Features
- Update retrieve() in RestClient to execute and extract in single scope #33777
- Remove
proxyTargetAware
attribute from@MockitoSpyBean
#33775 - PathMatchingResourcePatternResolver sorting of JAR resources #33771
- Add default handling for disconnected client errors to Spring MVC #33763
- Remove ServerResponse.AsyncBuilder interface #33736
- Fix
PathMatchingResourcePatternResolver
manifest classpath discovery #33705 - Add cookie support to RestClient #33697
π Bug Fixes
@MockitoSpyBean
does not support transparent verification #33774- Bean with
defaultCandidate = false
and qualifier does not work with constructor injection #33762 - Update
HttpHeaders.setHost()
to actually remove the Host header #33716
π Documentation
- Rework links to Spring Boot docs in reference documentation #33776
- Add Kotlin examples in aot.adoc #33761
- Improve the discoverability of Java and Kotlin APIs documentation from the refdoc #32835
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@Nicklas2751, @bivo, @philwebb, and @roll-w