Releases: spring-projects/spring-framework
v5.3.30
β New Features
- Optimize
ClassUtils#getMostSpecificMethod#31100 - Optimize whitespace checks in
StringUtils#31069 - Align validation metadata handling in
PayloadMethodArgumentResolver#31056 - Register an override for an existing adapter in
ReactiveAdapterRegistry#31048 - Make bean initialization deterministic for multiple
@Autowiredmethods on same bean class #30994 - Performance bottlenecks while creating scoped bean instances #30892
π Bug Fixes
- Possible classloader leak through incomplete clearing of annotation caches #31176
- Spring
LogFactoryimplementation deviates from original ApacheLogFactoryin terms of abstract method declarations #31167 - Bean injection fails due to
nullSafeConciseToString()invokingisEmpty()on aMap/Collectionproxy #31156 - SpelExpressionParser throws IllegalStateException instead of ParseException for invalid expression #31099
@DynamicPropertySourcein@Nestedtest class cannot override dynamic properties from enclosing class #31085TransactionalApplicationListenerMethodAdaptershould find@TransactionalEventListeneron target class method #31037- ScheduledAnnotationBeanPostProcessor: graceful shutdown should not interrupt currently running jobs #31020
- Permgen memory leak due to
ClassInfocaching injava.beans.Introspectoron JDK 11/17 #31005 MethodIntrospector.selectMethods(?)fails to find methods in case of special bridge method arrangement #30907
π Documentation
- Fix documentation: Passing in Lists of Values for IN Clause does not work with JdbcTemplate #31229
- Refine CORS documentation for wildcard processing #31168
- Propagation REQUIRES_NEW may cause connection pool deadlock #31040
- Clarify R2DBC
ConnectionAccessorandDatabasePopulatorexception declarations #30933 - Doc: Avoid deadlock in
@PostConstructthrough SmartInitializingSingleton or ContextRefreshedEvent #30889
v6.1.0-M4
β New Features
- Support resource patterns in
@TestPropertySourcelocations #31055 - Support text blocks for inlined properties in
@TestPropertySource#31053 @Beanmethod should be always allowed to override scanned class matching its return type #31052- Support finding repeatable annotations in
AnnotatedTypeMetadata#31041 - Fail fast if a
@Beanmethod has a void return type #31007 - Use
Class#arrayType()where feasible #31002 ReactiveAdapterRegistryis not compatible with Mutiny 2 #31000- Avoid thread pinning in SseEmitter write operations #30996
- Add support for property file encoding in
@TestPropertySource#30982 - Support custom properties file formats in
@TestPropertySource#30981 - Support
@HttpExchangefor server side handling #30980 - Fail on error by default during test AOT processing #30977
- Deprecate
applyBeanPostProcessorsBeforeInitializationandapplyBeanPostProcessorsAfterInitializationin theAutowireCapableBeanFactoryinterface #30974 - Provide methods for obtaining include/exclude path patterns in
MappedInterceptor#30971 - Introduce
SimpleAsyncTaskSchedulerwith virtual threads support (as an alternative toThreadPoolTaskScheduler) #30956 - Support declarative mode for data binding #30948
- Support customizing the bind parameter name for constructor binding #30947
- Support
@RSocketExchangefor responding #30936 - Introduce
JdbcClientwith unified parameter capabilities (as a JDBC variant ofDatabaseClient) #30931 - Allow preferred constructor to be defined at the
BeanDefinitionlevel #30917 - Remove obsolete native image reflection hint registration for
TransactionDefinitionconstants #30854 - Deprecate
Constantsutility and stop using it internally #30851 - Use
Long.parseLong(CharSequence,int,int,int)to avoid intermediateStringcreation #30710 - Support Kotlin value class properties in SpEL #30468
- Add observability support for JMS #30335
@TransactionalEventListenerdoes not work withSimpleApplicationEventMulticaster.setTaskExecutor#30244- Direct autowiring of existing collection subtype bean if
ApplicationContextcontains beans of typeT#30022 - Clarify
FactoryBean.OBJECT\_TYPE\_ATTRIBUTEsupported types #29799 - Add support for Kotlin inline/value classes in
BeanUtils#28638 - Publish event for
@TransactionalEventListenerwith Spring WebFlux #27515 - Introduce
TransactionExecutionListenercallback API #27479 - R2DBC - DatabaseClient - Add bind method to accept an object #27282
- Introduce RowMapper with automatic binding to fields #26594
- Add support for Class-based mapping in DatabaseClient #26021
@Componentnot picked up by@ComponentScanif it has the same simple name as the main class #25952- Support custom TimeUnits in StopWatch #25803
@Lookupdoesn't work in case of AbstractBeanFactory's cacheBeanMetadata=false #25749- Injection of List is inconsistent with Resource[] #24845
- Provide guidance and better diagnostics when dependency injection makes a bean ineligible for complete post-processing #24092
- Availability of a bean definition's resolved factory method depends upon a side-effect of getBeanNamesForType which is lost when metadata caching is disabled #23795
- Validate
afterThrowingmethod signature inThrowsAdviceInterceptor#1896 - Support resource patterns in
@PropertySourcelocations [SPR-16785] #21325 - Increase reusability of
Validator[SPR-15314] #19877 - Support additional file formats in
ReloadableResourceBundleMessageSource#18990 - Reactive types support for
@Cacheablemethods [SPR-14235] #17920 - Support caching annotations for
CompletableFuturereturn values [SPR-12967] #17559
π Bug Fixes
- Move
ServerWebExchangeKotlin extensions to the right package #31046 - Spring does not find all
@ComponentScanor@PropertySourceannotations #30941 - 404 on static resource does not return ProblemDetail response #30930
π Documentation
- Document
@AliasForsupport inAnnotatedTypeMetadata.getAnnotationAttributes()#31042 - Update documentation for HTTP Interface return values #30959
- Update documentation for data binding improvements #30952
- Use of
ApplicationEventPublisherin a reactive call stack [SPR-16481] #21025
π¨ Dependency Upgrades
- Upgrade to JUnit 5.10 #30970
- Upgrade to Micrometer 1.12.0-M2 #30997
- Upgrade to Reactor 2023.0.0-M2 #31014
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@OlgaMaciaszek, @alidandach, @devdilson, @graceyu-own, @izeye, @kilink, @plx927, and @remeio
v6.1.0-M3
β New Features
- Update warning log messages for SimpleAsyncTaskManager to take into account virtual thread mode #30902
- Extract forwarded header handling out of UriComponentsBuilder #30886
- Reduce logging for ResourceNotFoundException #30884
- Revisit public API for
MBeanExporter#30874 - Early support for JDK 22 #30845
- DataAccessUtils result accessors with Optional return value #27735
- Add convert(Object, TypeDescriptor) method to ConversionService #25394
- Revisit DataAccessException translation API #24634
π Bug Fixes
@CachePutevaluates key before cache condition #22769- Topic messages are not sent when using transacted JmsTemplate in 'TransactionSynchronization.afterCommit' phase [SPR-16270] #20817
π Documentation
- Update javadoc to take virtual threads into account #30905
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
v6.1.0-M2
β New Features
- Refine the log message printed after restoration with CRaC #30876
- Add HttpExchangeAdapter for RestClient #30869
- Use latest version of
sockjs-clientinAbstractSockJsService#30848 - ClientHttpRequestFactory based on Reactor Netty HttpClient #30835
- Pause/resume capability for
ThreadPoolTaskExecutorandThreadPoolTaskScheduler#30831 - Rearrange HttpHeader adapters #30823
- Support use of MockRestServiceServer with RestClient #30821
- Allow built ServerResponse to throw exception #30818
- Method validation error handling by controller method parameter type #30813
- Add
RestClientKotlin extensions #30807 - Detect interface parameter annotations also from spring-messaging HandlerMethod #30801
- Allows JdkClientHttpRequest.DISALLOWED_HEADERS to be customized. #30788
- Change restore logging to info level #30775
- Add MultipartFileArgumentResolver for HTTP interface client #30728
- Align KeyValues of Scheduled-annotated observability with OpenTelemetry conventions #30721
- Detect invalid transaction configuration for transactional event listeners #30679
- Blocking execution for WebFlux controller methods #30678
- Add a CoExchangeFilterFunction for WebClient similar to CoWebFilter #30650
- Built-in Web Support for Method Bean Validation #30645
- Spring MVC and WebFlux handling of method validation errors #30644
- HttpClient based ClientHttpRequestFactory #30478
- HTTP interface client infrastructure and adapter for RestTemplate #30117
- Instrument Scheduled-annotated methods for observability #29883
- Add AOT support for Kotlin constructors with optional parameters #29820
- Introduce RestClient #29552
- Space in integer request parameter neither triggers the default value nor generates a 400 #29550
- Improve 404 error handling in Spring MVC #29491
- Issue with
equals(?)/hashCode()forResolvableType.forRawClass(?)#28608 - Introduce
ModuleResourcefor resources loaded from a givenModule#28507 ArrayToCollectionConvertershould default toListif target type isCollection#28048- ResolvableType should allow to determine matching type argument for generic return type #27748
- Parallel graceful shutdown for
ThreadPoolTaskExecutorandThreadPoolTaskScheduler#27090 - Support target instantiation and binding via constructor in DataBinder #26721
- Support for MultiValueMap elements in web data binding #26297
- Add binding support to functional servlet and reactive stack #25943
@Scheduledmethods in beans created by FactoryBeans are not cancelled #24629ExecutorConfigurationSupportAPI refinement to control internal executor shutdown #24497- DataBinder using constructor parameter should use path variables #22748
- Add JDBC SqlValue classes for arrays #1850
- Support Kotlin parameter default values in HTTP handler methods #21139
- Multiple TaskSchedulers to be supported with
@Scheduled[SPR-16271] #20818 - Let the DataBinder construct nested objects #20806
- Add support to any Iterable types on PropertyAccessor #907
π Bug Fixes
- ScheduledAnnotationBeanPostProcessor fails without Reactive Streams on the classpath #30707
@SessionAttributeshandler invoked too early if controller method execution is deferred #30337- Fix AbstractMessageConverter not delegating to ContentTypeResolver when message header is null #29768
- JSON deserialization for Kotlin collections on inherited classes #24033
π Documentation
- Update documentation on customizing validation errors with MessageSource #30653
- Update documentation for method validation improvements in spring-context, Spring MVC, and WebFlux #30643
π¨ Dependency Upgrades
- Upgrade to Context Propagation 1.1.0-M3 #30882
- Upgrade to Kotlin 1.9.0 #30719
- Upgrade to Kotlin Coroutines 1.7.2 #30833
- Upgrade to Micrometer 1.12.0-M1 #30872
- Upgrade to Project CRaC 1.3.0 #30812
- Upgrade to Reactor 2023.0.0-M1 #30856
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@OlgaMaciaszek, @erichaagdev, @izeye, @kooixh, @ljtfreitas, @marschall, @mdeinum, @spencergibb, and @yoshikawaa
v6.0.11
β New Features
- Reduce
WARNlevel log output during test AOT processing #30867 - Avoid need for reflection hints for
MBeanExporterin native image #30846 - Tolerate
AnnotationUtils.isCandidateClasscall withnullas annotation type #30842 - Simplify
DefaultSingletonBeanRegistry.isDependent()#30839 - Add missing
@Nullableannotations in ContentDisposition.Builder #30820 - Provide explicit support for collections, maps, and arrays in
ObjectUtils.nullSafeConciseToString()#30810 - Extend list of supported types in
ObjectUtils.nullSafeConciseToString()#30805 - Align ConcurrentMapCacheManager locking behavior with CaffeineCacheManager #30780
- Improve logging for missing dependencies in
MicrometerObservationRegistryTestExecutionListener#30747 - Optimize
KotlinReflectionParameterNameDiscoverer#30725 - Change
InvocableHandlerMethod#invokeSuspendingFunctionreturn type toObject#30716 ResolvableType.hasUnresolvableGenerics()should cache its result #30713- Deprecate RootBeanDefinition(ResolvableType) constructor #30704
- Reinstate dependency injection support for legacy JSR-250
@javax.annotation.Resourceannotation #30695 - Translate SQL Exception with State S0001 and Vendor Code 2628 to a Spring Exception in MSSQL 2019 #30681
- Ensure Spring
LogFactorycontains all public methods from ApacheLogFactory#30668 - Infer hints required for aspects #28711
- Improve diagnostics for CGLIB ClassLoader issues with shared classes in parent ClassLoader #25940
JdbcTemplatedoes not callhandleWarningsin case of exception #23106- Avoid illegal reflective access in ContextOverridingClassLoader.isEligibleForOverriding #22791
π Bug Fixes
- Revert changes to
toString()inFieldError#30799 - For a prototype bean, if first-time rejected value is null, subsequent value will wrongly be null always #30794
- Fix log level on error with
@TransactionalEventListener#30776 - ClassCastException in
AbstractBeanDefinition.getBeanClassName()when getting bean multithreaded #30773 - SerializableTypeWrapper does not consistently catch InvocationTargetException #30764
- NPE in MvcUriComponentsBuilder with no-arg target method on interface #30756
- ArithmeticException: long overflow on
@Scheduled(fixedDelay = Long.MAX_VALUE) #30754 Jackson2ObjectMapperBuilderbreaks whenmodulescustomizer followsmodulesToInstall#30751NullPointerExceptionin reactiveTransactionalOperatorImpl#30729MicrometerObservationRegistryTestExecutionListeneruses wrongClassLoaderto detect dependencies #30726- Support [package-]private init/destroy methods in AOT mode #30724
- Package-private init/destroy methods are not always invoked #30718
- Generic RedisKeyExpiredEvent not delivered to
@EventListeneranymore in 6.0.9 #30712 - Explicit BeanDefinition#targetType is not honoured in AOT scenarios #30689
- Spring ORM SpringBeanContainer when trying to create a bean fails with not found bean definition, and fallbacks to default hibernate bean creation #30683
- PathResourceResolver#resolve*Internal is missing
@Nullabledeclarations #30601 - Code generation should only apply shortcut if the target method is not ambiguous #29278
π Documentation
- Update STOMP documentation with the new guidelines #30857
- Clarify
ReactiveTransactionManagerexception declarations #30817 - Doc:
JdbcTransactionManagervsDataSourceTransactionManager#30802 - Fix typo in Javadoc for
BeanDefinitionDsl.kt#30798 - Remove
@Aspectfor classes containing only@Pointcutdeclarations in reference documentation #30790 - NestedRuntimeException javadoc not updated after implementation change #30748
AbstractMessageListenerContainerdocumentation and code disagree regarding log level #30730- Fix link text from "null" to "Component Classes" in Testing chapter #30714
- Document that
RowCallbackHandlercan be used withNamedParameterJdbcTemplate#30705 - Javadoc HTML tables are no longer rendered properly since upgrade to Java 17 #30701
- Fix typo in
UriUtilsJavadoc #30598 - Fix example in Javadoc for
MultipartBodyBuilder#30593 - Elaborate on ShallowEtagHeaderFilter limitations #30517
- Document how to configure a custom LocalContainerEntityManagerFactoryBean to work with native #30498
- Document that
@Sqlrequiresspring-jdbcandspring-txon the classpath #30280 - Document limitations of Servlet Filter observations #29398
- Warn against direct usage of Servlet API in WebFlux applications #28872
- ResultSet holdability into the View layer broken by Hibernate 5 #26557
π¨ Dependency Upgrades
- Upgrade to
micrometer-bom1.10.9 andcontext-propagation1.0.4 #30860 - Upgrade to me.champeau.jmh 0.7.1 #30690
- Upgrade to Reactor 2022.0.9 #30871
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@KSH-code, @antongub, @bnbakp0582, @cwatzl, @heoYH, @izeye, @kilink, @maartenc, @quaff, @rwinch, @valfirst, and @vbaidak
v5.3.29
β New Features
- Avoid illegal reflective access in ContextOverridingClassLoader.isEligibleForOverriding #30868
- Improve diagnostics for CGLIB ClassLoader issues with shared classes in parent ClassLoader #30866
JdbcTemplatedoes not callhandleWarningsin case of exception #30852- Tolerate
AnnotationUtils.isCandidateClasscall withnullas annotation type #30843 - Simplify
DefaultSingletonBeanRegistry.isDependent()#30841 - Provide explicit support for collections, maps, and arrays in
ObjectUtils.nullSafeConciseToString()#30811 - Extend list of supported types in
ObjectUtils.nullSafeConciseToString()#30806 - Align ConcurrentMapCacheManager locking behavior with CaffeineCacheManager #30781
ResolvableType.hasUnresolvableGenerics()should cache its result #30715- Ensure Spring
LogFactorycontains all public methods from ApacheLogFactory#30711 - Translate SQL Exception with State S0001 and Vendor Code 2628 to a Spring Exception in MSSQL 2019 #30682
π Bug Fixes
- For a prototype bean, if first-time rejected value is null, subsequent value will wrongly be null always #30809
- Revert changes to
toString()inFieldError#30800 - Fix log level on error with
@TransactionalEventListener#30784 - SerializableTypeWrapper does not consistently catch InvocationTargetException #30767
- NPE in MvcUriComponentsBuilder with no-arg target method on interface #30757
Jackson2ObjectMapperBuilderbreaks whenmodulescustomizer followsmodulesToInstall#30752- Spring ORM SpringBeanContainer when trying to create a bean fails with not found bean definition, and fallbacks to default hibernate bean creation #30685
π Documentation
- ResultSet holdability into the View layer broken by Hibernate 5 #30863
- Clarify
ReactiveTransactionManagerexception declarations #30819 - Doc:
JdbcTransactionManagervsDataSourceTransactionManager#30814
π¨ Dependency Upgrades
- Upgrade to Reactor 2020.0.34 #30873
v5.2.25.RELEASE
v6.1.0-M1
β New Features
- Consistent simple value type check (including UUID treatment for data binding) #30664
- Release shared JMS Connection when message listener container is stopped #30612
- Property-driven onRefresh checkpoint during application context bootstrap #30606
- Support letters other than A-Z in identifiers in SpEL expressions #30580
- Remove System.out calls in PreComputeFieldFeature #30571
- Have the ErrorResponse.Builder take in a custom ProblemDetail instance #30568
- Allow setting the ProblemDetail.type via a MessageSource #30566
- ClientHttpRequestFactory based on Jetty HttpClient #30564
- Remove buffering in ClientHttpRequestFactory implementations #30557
- Support JAXBElement in Jaxb2XmlEncoder #30552
- Disable SpEL selector support in WebSocket messaging by default #30550
- Enforce JPA bootstrap failure for incomplete Hibernate Validator setup #30549
- Support parsing
longdates inInstantFormatter#30546 - Port BeanPropertyRowMapper and DataClassRowMapper for r2dbc #30530
- Add non-null precondition checks in
DefaultEntityResponseBuilder#30433 - Deprecate spring-context-indexer #30431
- Update
RuntimeHintsAgentPluginto use the native image code path #30422 - HTTP interface client should not have blockingTimeout set and leave it to the underlying client by default #30403
- Improve
toString()forProfiles.of()implementation #30374 - Add ReloadableResourceBundleMessageSource Resource selection hook #30369
- Optimize DefaultLifecycleProcessor::stopBeans #30361
- Deprecate
AutowireCapableBeanFactory.createBean(Class, int, boolean)for consistent usage ofcreateBean(Class)#30345 - Support
setCharacterEncoding(null)inMockHttpServletResponse#30341 - Add support for converting a String to an Instant #30312
- Refine
RouterFunctionMappingordering consistency #30278 - CRaC Resource adapter for bean lifecycle in application context #30242
- Configuration options for virtual threads #30241
- Support for SequencedCollection/Set/Map #30239
- MethodArgumentNotValidException::errorsToStringList should include only the resolved message when MessageSource is used #30198
- Support
@XmlSeeAlsoin Jaxb2XmlDecoder #30167 - Add SpEL support for registered MethodHandles #30045
- Add test support to record async events, with JUnit Jupiter caveat #30020
- Returning a
CompletableFuture.failure()from an async, transactional method should mark the transaction as roll back #30018 - Support
@Scheduledon Reactive methods and Kotlin suspending functions #29924 - Compatibility with JVM checkpoint restore (OpenJDK's Project CRaC) #29921
Validatorfactory methods withBiConsumer#29890- Spring MVC and WebFlux method validation support that also adapts
ConstraintViolations #29825 - Remove LocalVariableTableParameterNameDiscoverer #29559
- Avoid use of
java.net.URLconstructors #29481 - Creating relative resource for URL resource should create relative Resource even if relative path has URL in it #28522
- ModelAttributeMethodArgumentResolver does not support custom field binding for immutable objects #28284
- ConcurrentTaskScheduler and ConcurrentTaskExecutor can create an executor with no way to shut it down #27914
- R2DBC ConnectionFactory bean
.close()method should be called/subscribed when available #26991 - org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler does not handle vendor-specific application/x-ndjson media types #26817
- Improve the experience of handling validation errors in controller methods #26219
- Compatibility with virtual threads (OpenJDK's Project Loom) #23443
- Avoid repeated attempts to load a failing
ApplicationContextin the TestContext framework [SPR-9548] #14182
π Bug Fixes
- Retain profiles used when running AOT #30421
- Automatic context propagation stops working after an error occurs #30013
π Documentation
- Introduce JVM checkpoint/restore support documentation #30647
- Fix link in Javadoc of
PassThroughFilterChain#30365 - Clarify behavior of the Elvis SpEL operator in documentation #30352
- Fix link to releases feed #30340
π¨ Dependency Upgrades
- Upgrade to Jackson 2.15 #30665
- Upgrade to Kotlin 1.8 #29754
- Upgrade to Kotlin Coroutines 1.7 #30514
- Upgrade to Kotlin Serialization 1.5 #30515
- Upgrade to SnakeYAML 2.0 #30048
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@OlgaMaciaszek, @RemusRD, @aooohan, @asomov, @izeye, @jstansel, @kzander91, @luohongtu, @making, @rwinch, and @srivatsa-cfp
v6.0.10
β New Features
- ClassLoader can be null in DeserializingConverter and should be annotated with
@Nullable#30670 - Introduce
TestExecutionListenerfor Micrometer'sObservationRegistryin the TestContext framework #30658 - Add missing hint for
ResourceEditor#30628 - Add missing hint for converting String to URI #30627
- Redesign inner Pointcut implementations as standalone classes #30621
- Add missing
@Nullablein DefaultJmsListenerContainerFactory #30620 - Handle custom JMS acknowledgment modes as client acknowledge #30619
- Declare Advisor#isPerInstance() as default method #30614
- Improve error message for unsupported character in SpEL expression #30602
- Multipart data is always read irrelevant of handler response #30590
- Performance optimization in AbstractBeanFactoryBasedTargetSource.hashCode() #30576
- Log a warning when
commons-loggingis in the classpath #30575 - Always use
MethodArgumentNotValidException(MethodParameter, BindingResult)constructor #30558 - Remove non-empty filename check in
ContentDispositionbuilder #30537 - Add missing
EntityManagerFactoryhints forSharedEntityManagerCreator#30523 - Disable Hibernate reflection optimizer with native #30521
- Introduce a method in
MockHttpServletRequestBuilderto set remote address #30497 - Skip class transformer in
PersistenceUnitInfoDescriptorfor native images #30492 @Bean'lite' mode not supported if@Beanmethods are not declared locally #30449- Align HibernateJpaVendorAdapter with Hibernate ORM 6.2 #30288
- Add nested propagation support to R2dbcTransactionManager #30134
π Bug Fixes
- Cron expression scheduling might be triggered 1 millisecond earlier #30666
- Change of behaviour for UUID in bean validation output in v5.3.27 #30661
- Test context cache stats are not logged when
ApplicationContextfails to load #30635 - Inconsistent ProxyCallbackFilter#equals/hashCode methods in CglibAopProxy #30615
- SpEL's
CompoundExpression.toStringAST()incorrectly includes.for indexed properties #30610 - NPE in
ReactiveTransactionSupport.unwrapIfResourceCleanupFailure#30597 - CollectionFactory.createMap(HashMap.class, 0) now returns a LinkedHashMap rather than a HashMap #30596
- ThreadLocalTargetSource does not include actual target bean name in NamedThreadLocal #30581
- ApplicationListenerMethodAdapter inconsistently publishes events from CompletableFuture #30578
- Unsupported SQL type: TIMESTAMP_WITH_TIMEZONE when using OffsetDateTime with MySQL #30556
- SpringBeanContainer not called with Hibernate ORM 6.2 #30545
- WebFlux returns 406 instead of RFC 7807 response for subtype of ProblemDetail #30533
- HTTP Interface client cannot send URI query parameter with multipart request #30520
- Transaction isolation level not working with R2dbcTransactionManager #30508
- Support for AOT processing with GraalVM tracing agent is not consistent #30511
- For
@Beanmethod that returnsnull,@AutowiredinjectsNullBeaninstead ofnullfor cached arguments #30485 - MediaType property binding issue in native builds #30491
- InjectionMetadata AOT contributions do not check for existing property value #30476
- Spring Framework 6.0.8 appears to cause issues in OSGi environment #30389
- Empty
@RequestMappingmethod should match both "" and "/" consistently #30293 - EclipseLinkJpaDialect: Unexpected default isolation levels #29997
- Memory leak with CglibAopProxy$ProxyCallbackFilter #26266
π Documentation
- Fix markup issue in Javadoc of QuartzCronField #30646
- Document
@DirtiesContextsemantics when declared at the class level and method level #30623 - Add missing Javadoc for
RegisteredBean.resolveAutowiredArgument()#30609 - Fix invalid link in transaction resources #30570
- FileSystemUtils::deleteRecursively Javadoc refers to File instead of Path #30554
- Improve Javadoc for
ExchangeFilterFunction#30543 - Update Javadoc and reference doc for WebMvcConfigurer to mention Boot's HttpMessageConverters #30538
- Add Javadoc since to InjectedElement.shouldInject() #30512
- Fix wording in r2dbc Statement Filters section of ref docs #30482
- Typo in Spring official documentation #30473
- Link for
@javax.annotation.Nonnullis wrong in Javadoc for Spring's@NonNull#30455 - Improve how the build deals with javadoc invalid references #30428
- Docs: Remove duplicate in SpEL feature list #30404
- Document which
@Scheduledattributes support SpEL expressions #29290
π¨ Dependency Upgrades
- Upgrade to
micrometer-bom1.10.8 andcontext-propagation1.0.3 #30657 - Upgrade to Reactor 2022.0.8 #30655
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@Foolkin, @anyuruf, @galingerv, @izeye, @jmewes, @kihyuk-sung, @leewin12, @marcingrzejszczak, @rweisleder, @rwinch, @scordio, @ssang1105, and @vpavic
v5.3.28
β New Features
- ClassLoader can be null in DeserializingConverter and should be annotated with
@Nullable#30672 - Performance optimization in AbstractBeanFactoryBasedTargetSource.hashCode() #30585
- Consistent support for MultiValueMap and common Map implementations in CollectionFactory #30441
- Reject null and empty SpEL expressions #30373
- Introduce
Environment.matchesProfiles()for profile expressions #30226
π Bug Fixes
- Change of behaviour for UUID in bean validation output in v5.3.27 #30662
- Spring Framework 5.3.27 appears to cause issues in OSGi environment #30637
- Inconsistent ProxyCallbackFilter#equals/hashCode methods in CglibAopProxy #30616
- EclipseLinkJpaDialect: Unexpected default isolation levels #30589
- ThreadLocalTargetSource does not include actual target bean name in NamedThreadLocal #30586
- ApplicationListenerMethodAdapter inconsistently publishes events from CompletableFuture #30584
- For
@Beanmethod that returnsnull,@AutowiredinjectsNullBeaninstead ofnullfor cached arguments #30551 - Make maximum SpEL expression length configurable #30446
- Respect TaskDecorator configuration on DefaultManagedTaskExecutor #30443
π Documentation
- Document which
@Scheduledattributes support SpEL expressions #30642 - FileSystemUtils::deleteRecursively Javadoc refers to File instead of Path #30555
π¨ Dependency Upgrades
- Upgrade to Reactor 2020.0.33 #30656