Releases: spring-projects/spring-framework
Releases Β· spring-projects/spring-framework
v5.2.19.RELEASE
β New Features
- Declare serialVersionUID on DefaultAopProxyFactory #27785
- Use ByteArrayDecoder in DefaultClientResponse::createException #27667
π Bug Fixes
- ProxyFactoryBean getObject called before setInterceptorNames, silently creating an invalid proxy [SPR-7582] #27817
- Possible NPE in Spring MVC LogFormatUtils #27783
- UndertowHeadersAdapter's remove() method violates Map contract #27593
- Fix assertion failure messages in DefaultDataBuffer.checkIndex() #27577
π Documentation
- Lazy annotation throws exception if non-required bean does not exist #27660
- Incorrect Javadoc in [NamedParameter]JdbcOperations.queryForObject methods regarding exceptions #27581
- DefaultResponseErrorHandler update javadoc comment #27571
π¨ Dependency Upgrades
v5.3.13
β New Features
- Use ByteArrayDecoder in DefaultClientResponse::createException #27666
- Improve the efficiency of UrlPathHelper.getSanitizedPath() #27623
- Add option to cleanup multipart temp files #27613
- Add support for custom expression parsing in CachedExpressionEvaluator #27604
- Use LocalDataSourceJobStore only if one is not specified via Quartz properties #27560
- Introduce TypeFilterUtils for processing
@ComponentScan
.Filter #27553 - Improve mapping function in ExtendedEntityManagerCreator.createProxy() #27456
π Bug Fixes
- Static resources are missing when jar does not have a directory entry #27624
- MultipartParser emits DataBufferLimitException about "Part headers exceeded the memory usage limit" unexpectedly #27612
- UndertowHeadersAdapter's remove() method violates Map contract #27592
- SpEL vararg method invocation fails if string literal contains a comma #27582
π Documentation
- Fix grammar in webflux-webclient.adoc #27657
- Lazy annotation throws exception if non-required bean does not exist #27649
- Clarify LogFormatUtils limitLength vs replaceNewlines parameters #27632
- PersistenceExceptionTranslationInterceptor attempting to instantiate prototype PersistenceExceptionTranslator beans #26412
π¨ Dependency Upgrades
- Upgrade to Reactor 2020.0.13 #27636
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
v5.3.12
π Bug Fixes
- Update warn log message for empty static resource locations #27575
- Default content type of response changed in v5.3.11 #27573
- Fix assertion failure messages in DefaultDataBuffer.checkIndex() #27567
π Documentation
- Incorrect Javadoc in [NamedParameter]JdbcOperations.queryForObject methods regarding exceptions #27559
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
v5.3.11
β New Features
- Enhance DefaultResponseErrorHandler to allow logging complete error response body #27552
- Include correct keyword in CookieAssertions failure messages #27550
- Use Arrays.hashCode() in ByteArrayResource.hashCode() #27544
- Allow default CacheAwareContextLoaderDelegate configuration via a system property #27540
- Invoke bean-derived (Auto)Closeable.close() method directly #27504
- Defensive reference to JNDI API for JDK 9+ (optional
java.naming
module) #27483 - DefaultMessageListenerContainer does not log an error/warning when consumer tasks have been rejected #27451
- Provide accessor on externallyManaged RootBeanDefinition attributes #27449
- Allow to avoid class validation in
CglibAopProxy
viaProxyFactory
#27439 - Add support for non-public record declarations #27437
- Emit WebClientResponseException for malformed HTTP response #27262
- DatabasePopulatorUtils.execute should commit if the current Connection has auto-commit set to false #27008
π Bug Fixes
- CronTrigger uses new Date() instead of context's Clock #27546
- Performance impact of con.getContentLengthLong() in AbstractFileResolvingResource.isReadable() downloading huge jars to check component length #27541
- Performance impact of ResourceUrlEncodingFilter on HttpServletResponse#encodeURL #27538
- UriTemplateRequestEntity doesn't override hashCode() and equals() #27531
- DataBufferUtils.write loses context #27517
- Avoid duplicate JCacheOperationSource bean registration in <cache:annotation-driven /> #27499
- Proxy generation with Java 17 fails with "Cannot invoke "Object.getClass()" because "cause" is null" #27490
- MediaType.sortBySpecificityAndQuality throws java.lang.IllegalArgumentException: Comparison method violates its general contract #27488
- Leading whitespaces are removed while reading SSE response #27473
- Non-escaped closing curly brace in RegEx results in initialization error on Android #27467
- ConcurrentReferenceHashMap's entrySet violates the Map contract #27454
- Avoid early ConversionService determination in StandardBeanExpressionResolver #27446
- Spring Framework >= 5.3.8 ASM ClassReader fails to parse class file due to InputStream optimization #27429
- StringUtils.collectionToDelimitedString(?) fails with NullPointerException when the collection contains null #27419
- Spring HATEOAS results in 406 with Kotlin Coroutine and ResponseEntity in WebFlux #27292
π Documentation
- Remove remark about missing caching API. #27501
π¨ Dependency Upgrades
- Upgrade to JUnit 5.8.1 #27450
- Upgrade to Reactor 2020.0.12 #27527
- Upgrade to SmallRye Mutiny 1.1.1 #27555
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
v5.2.18.RELEASE
β New Features
- Enhance DefaultResponseErrorHandler to allow logging complete error response body #27558
- DefaultMessageListenerContainer does not log an error/warning when consumer tasks have been rejected #27457
π Bug Fixes
- Performance impact of con.getContentLengthLong() in AbstractFileResolvingResource.isReadable() downloading huge jars to check component length #27549
- Performance impact of ResourceUrlEncodingFilter on HttpServletResponse#encodeURL #27548
- Avoid duplicate JCacheOperationSource bean registration in <cache:annotation-driven /> #27547
- Non-escaped closing curly brace in RegEx results in initialization error on Android #27502
- Proxy generation with Java 17 fails with "Cannot invoke "Object.getClass()" because "cause" is null" #27498
- ConcurrentReferenceHashMap's entrySet violates the Map contract #27455
π¨ Dependency Upgrades
- Upgrade to Reactor Dysprosium-SR24 #27526
v5.3.10
β New Features
- Invalid JavaBean property 'logoutHandlers' being accessed (warning in the logs for Spring Security's ConcurrentSessionFilter) #27372
- Convenient configuration of type permissions for XStream 1.4.18 #27343
- Add SmallRye Mutiny support to ReactiveAdapterRegistry #27331
- Introduce
ExceptionCollector
testing utility #27316 - Support
TimeUnit
in the@Scheduled
annotation #27309 - Make it possible to determine if circular references are prohibited or if the cycle just couldn't be broken #27289
- Support Charset for character encoding in MockMvc #27231
- Support default character encoding for response in MockMvc #27230
- Introduce
setDefaultCharacterEncoding()
inMockHttpServletResponse
#27214 - Use MessageSource for
@ExceptionHandler
methods #27203 - ResponseStatusException.initCause always throws IllegalStateException #27196
- Introduce soft assertions for WebTestClient #26969
- Introduce soft assertions for MockMvc #26917
- Blockhound flags a blocking call when WebFlux serves a static resource #26631
- Optimize memory allocations in StringUtils#cleanPath #26316
- InvocableHandlerMethod calls makeAccessible(getBridgedMethod()) on every call [SPR-15230] #19795
π Bug Fixes
- Support char, float, and double primitive default values in BeanUtils.instantiateClass() #27390
- Fix memory leak on AOP Proxy class definition cache #27375
- Fix response body missing 1st byte inside UnknownContentTypeException #27374
- CommonsMultipartResolver and DEBUG logging lead to empty fileMap in MultipartHttpServletRequest #27350
- Fix UrlPathHelper#shouldRemoveSemicolonContent() #27303
- CompositeUriComponentsContributor#hasContributors: method name is not compliant with its intention #27271
- Error with formatMapping method in AbstractMethodMessageHandler.java #27247
- Apply default
ResultHandler
s before defaultResultMatcher
s inMockMvc
#27225 MockHttpServletResponse.characterEncoding
should not be@Nullable
#27219- WebSocketMessageBrokerStats.getExecutorStatsInfo() throws exception if Executor is not a ThreadPoolExecutor #27209
HtmlUnitRequestBuilder
ignores file uploaded viaHtmlFileInput.setData()
#27199
π Documentation
- Fix wording in Javadoc of ClientResponse.mutate() #27389
- Fix some typos and mistakes in docs #27388
- Fix misplaced comma in AOP doc #27387
- Fix Kotlin example for filtering handler functions #27337
- Document when
prepareTestInstance()
is invoked when using theSpringMethodRule
#27305 - Fix duplicated "the" occurrences in Javadoc and XSD #27291
- Fix typo in DefaultPartHttpMessageReader #27260
- Fix reference to Optional.isPresent() in ObjectUtils.isEmpty() #27223
- Clarify that ClientRequest.from(..) also copies body #27220
@Cacheable
caches empty Optionals but documentation states otherwise #27184- Reference docs missing left-hand side navigation #27177
π¨ Dependency Upgrades
- Compatibility with Jackson 2.13 #27206
- Upgrade to JUnit 5.8 #27392
- Upgrade to Kotlin 1.5.30 #27371
- Upgrade to Reactor 2020.0.11 #27399
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
- @leeseojune53
- @AlexejTimonin
- @joshua-qa
- @marschall
- @hantsy
- @juchanei
- @izeye
- @takeaction21
- @yokotaso
- @gushev
- @Yin-Jui
- @evpaassen
- @matvs
- @crlikcngroup
- @ydh6226
- @knittl
- @Inmord
- @benelog
- @Axzial
- @quaff
- @di72nn
- @aoudiamoncef
- @lyxell
- @mustafau
- @xak2000
- @manish-in-java
- @wyhasany
- @GrantFleming
- @w3-3w
- @Syuziko
v5.2.17.RELEASE
β New Features
- Invalid JavaBean property 'logoutHandlers' being accessed (warning in the logs for Spring Security's ConcurrentSessionFilter) #27396
- Convenient configuration of type permissions for XStream 1.4.18 #27344
- ResponseStatusException.initCause always throws IllegalStateException #27212
π Bug Fixes
- Support char, float, and double primitive default values in BeanUtils.instantiateClass() #27401
- CommonsMultipartResolver and DEBUG logging lead to empty fileMap in MultipartHttpServletRequest #27398
- Fix UrlPathHelper#shouldRemoveSemicolonContent() #27310
- CompositeUriComponentsContributor#hasContributors: method name is not compliant with its intention #27275
- WebSocketMessageBrokerStats.getExecutorStatsInfo() throws exception if Executor is not a ThreadPoolExecutor #27213
π Documentation
- Fix Kotlin example for filtering handler functions #27352
- Document when
prepareTestInstance()
is invoked when using theSpringMethodRule
#27312
π¨ Dependency Upgrades
- Upgrade to Reactor Dysprosium-SR23 #27378
v5.3.9
β New Features
- Configure CommonsMultipartResolver to support specific HTTP methods #27161
- Allow BeanDefinitionBuilder to set an instance supplier with a ResolvableType #27160
- Reason of
@ResponseStatus
on handler method is not resolved by MessageSource #27156 - ResourceHandlerRegistry#getHandlerMapping should initialize handler once in outer loop #27153
- Set synthetic flag using BeanDefinitionBuilder #27141
- BeanCreationException error message should always include declaring class of constructor (or factory method) #27139
- Improve Jetty 10 check in JettyClientHttpResponse #27136
- Jetty10RequestUpgradeStrategy use an old jetty 9 class HandshakeRFC6455 #27121
- ClassNotFoundException using Jetty 10 and its reactive client #27112
- Use StringBuilder.append(char) where possible #27098
- Consider "wss" and "https" for secure flag in Forwarded header checks #27097
- SynchronossPartHttpMessageReader should only create temp directory when needed #27092
- Implement equals, hashCode, & toString in BeanMethod and *Metadata types #27076
- Remove logging dependency in BeanUtils #27070
- Exclude sealed interfaces from auto-proxying (for JDK 17 compatibility) #27027
- Blockhound error when running with transaction with a TransactionOperator #26955
- Configure StandardServletMultipartResolver to only support multipart/form-data #26826
- Add a way to set executeExistingDelayedTasksAfterShutdown from ThreadPoolTaskScheduler #26719
- Apply dynamic changes in ThreadPoolTaskExecutor before setting local value #26700
πͺ² Bug Fixes
- JettyHttpHandlerAdapter is not aware of Server[Request|Response]Wrapper #27146
- {*path} pattern (CaptureTheRestPathElement) includes undocumented leading slash in
@PathVariable
path #27132 - NoSuchMethodError when invoke JettyWebSocketSession.getRemoteAddress in jetty 10 #27120
- CronExpression is still broken on spring-context-5.3.8 #27117
- SimpleMethodMetadataReadingVisitor.Source.toString() omits separator for method arguments #27095
- DefaultPathSegment allows shared empty parameters map to be mutated #27064
- AOP auto-proxying with proxyTargetClass=true and introduction advice does not work for JDK proxy targets #27044
- ServletRequestDataBinder assumes Standard servlet multipart handling #26999
- DataClassRowMapper should not override Kotlin init properties #26569
π Documentation
- Add Javadoc
@since
toBeanDefinitionBuilder.setSynthetic()
#27155 - Fix link to Javadoc API #27151
- Added description for HandlerInterceptor #27122
- Fix typo in core-beans.adoc #27113
- Fix typo in BeanDefinitionDsl.kt #27105
- Improve docs for getContentAsByteArray method of ContentCachingRequestWrapper #27068
- Fix explanation on default settings for content negotiation in reference doc #27067
- Document that any
@Valid*
annotation triggers validation in the reference manual #27050 - Improve RequestPartMethodArgumentResolver Javadoc #27043
- Improve RequestResponseBodyMethodProcessor Javadoc #27042
- Clarify that baseName in ResourceBundleMessageSource does not support multiple locations #27038
- Link alternate documentation formats #27015
π¨ Dependency Upgrades
- Compatibility with HtmlUnit 2.51 #27147
- Upgrade to ASM 9.2 (for early Java 18 support) #27069
- Upgrade to Kotlin 1.5.21 #27110
- Upgrade to Kotlin Coroutines 1.5.1 #27157
- Upgrade to Mockk 1.11.0 #27109
- Upgrade to Reactor 2020.0.9 #27158
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
v5.2.16.RELEASE
β New Features
- BeanCreationException error message should always include declaring class of constructor (or factory method) #27140
- SynchronossPartHttpMessageReader should only create temp directory when needed #27094
- Deprecate internal APIs in ScriptUtils implementations #26948
πͺ² Bug Fixes
- AOP auto-proxying with proxyTargetClass=true and introduction advice does not work for JDK proxy targets #27148
- SimpleMethodMetadataReadingVisitor.Source.toString() omits separator for method arguments #27096
- DefaultPathSegment allows shared empty parameters map to be mutated #27065
- Ignore comments when searching for SQL statement delimiter in ScriptUtils #26942
- Ignore delimiter enclosed in double quotes in ScriptUtils #26936
π Documentation
- Fix
@Transactional
examples regarding method visibility #27005 - Improve
@Transactional
docs regarding method visibility #27004 - Document transactional semantics for
@TransactionalEventListener
after completion methods #26979
π¨ Dependency Upgrades
- Upgrade to Reactor Dysprosium-SR21 #27163
v5.3.8
β New Features
- HttpComponentsClientHttpConnector should close underlying resources #27032
- Default value of StandaloneMockMvcBuilder.useSuffixPatternMatch differs from the same property in RequestMappingHandlerMapping #27030
- Lookup method autowiring ignores method's generic info #26998
- Set BEST_MATCHING_PATTERN_ATTRIBUTE on requests with WebMvc.fn #26963
- Remove jackson-module-kotlin warning #26962
- Switch back to parallel thread after WebSession id is generated #26958
- Introduce ResponseEntity.internalServerError() #26952
- Polish PORT_PATTERN in UriComponentsBuilder #26951
- Deprecate/Remove internal APIs in ScriptUtils implementations #26947
- Consider returning static DefaultApplicationStartup step #26939
- Exception in Tomcat when SockJS top URL is a WebSocket upgrade #26933
- Improve support for port numbers in allowedOriginPattern of CorsConfiguration #26927
- Add ApplicationEvent constructor for specifying timestamp #26871
- Add awaitExchangeOrNull extension function to reactive webclient #26778
πͺ² Bug Fixes
- Revisit fix for gh-26905 in UriComponentsBuilder #27039
- MultipartHttpMessageWriter in WebClient doesn't use custom Jackson Encoder since 5.3.3 #27017
- PartFile name lost when building a MultiPart #27007
- No replacement of deprecated CronSequenceGenerator.isValidExpression #26996
- NPE if StompEndpointRegistry has allowedOrigins with null #26987
- CronExpression is broken on spring-context-5.3.6 #26964
- FlightRecorderApplicationStartup is not thread safe #26941
- Ignore delimiter enclosed in double quotes in ScriptUtils #26935
- Ignore comments when searching for SQL statement delimiter in ScriptUtils #26911
π Documentation
- spring-framework-main-code attribute has not been expanded in docs #27041
- Document that class-level
@ResponseStatus
is inherited by@ExceptionHandler
methods #27031 - Improve
@Transactional
docs regarding method visibility #27003 - Fix
@Transactional
examples regarding method visibility #27001 - Fix typo in code example #26980
- Document transactional semantics for
@TransactionalEventListener
after completion methods #26974 - Fix typo #26973
- Fix broken Javadoc tags #26967
π¨ Dependency Upgrades
- Upgrade to ASM master #27023
- Upgrade to Coroutines 1.5.0 #26897
- Upgrade to JUnit 5.7.2 #26946
- Upgrade to Kotlin 1.5.10 #27035
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!