Releases: spring-projects/spring-framework
Releases Β· spring-projects/spring-framework
v6.0.0-M2
β New Features
- Stop defining a TaskScheduler bean in WebSocketConfigurationSupport #27903
- Remove unnecessary check in isBridgedCandidateFor() #27862
π Bug Fixes
- StrictHttpFirewall rejects request when HtmlUnit WebClient is called with encoded URL #27837
π Documentation
- Fix typo and use of componentry #27852
π¨ Dependency Upgrades
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
v5.3.15
β New Features
- PrintingResultHandler in MockMvc should infer UTF-8 encoding for JSON response #27926
- WebFlux request id should not contain internal IPs #27885
- Deprecate inappropriate getBeanFactory() method in AbstractBeanDefinitionReader #27875
- Make
H2SequenceMaxValueIncrementer
compatible with H2 database 2.0.x #27870 - Improve error message in ResolvableType.forClassWithGenerics() #27847
- Use of RequestPart with String leads to a file descriptor leak #27773
- Expose headers from native client request after request is committed #27768
π Bug Fixes
- Cannot read server-sent events without data (a.k.a. heartbeats) #27923
- ArrayIndexOutOfBoundsException with STOMP and Jetty 10 #27899
- ServerHttpResponseDecorator does not delegate methods for raw status code #27889
- Clear cache when clearing argument resolvers #27888
- Duplicated content-type response header on error response #27887
π Documentation
- Fix syntax in WebFlux Validation example #27907
- Add Section on Authorization to STOMP WebSocket documentation #27906
- Correct not compiling example code in Data Access docs #27886
π¨ Dependency Upgrades
- Upgrade to Reactor 2020.0.15 #27897
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
v6.0.0-M1
See also the upgrade instructions.
β New Features
- Deprecate CachingConfigurerSupport and AsyncConfigurerSupport #27813
- Deprecate StringUtils::trimWhitespace #27769
- Enforce Future or void return declaration for each asynchronously executed method (e.g. with class-level
@Async
) #27734 - Avoid unescape when CONNECT and CONNECTED frames #27722
- Support SQUARE brackets [] around NAMED parameter #27716
- Change StringUtils trimWhitespace to String.strip() #27703
- Retrieve MethodMetadata for all user-declared methods in the order of declaration #27701
- Refactor HttpMethod from enum to class #27697
- Use parseInt without substring method #27680
- Consistently replace String encoding names with StandardCharset arguments #27664
- Use 'toString(Charset)' instead of 'toString(String)' for encodings #27646
- Add method to ClientResponse that returns Mono terminating with createException #27637
- Create immutable MultiValueMap wrapper #27608
- Revisit MediaType ordering #27580
- Optimize header removal in ForwardedHeaderFilter #27466
- Change default driver in XStreamMarshaller from XppDriver to DomDriver #27464
- Retain support for legacy JSR-250 javax.annotation.PostConstruct/PreDestroy and JSR-330 javax.inject.Inject in addition to Jakarta EE 9 annotations #27444
- change string http header to enum #27356
- Allow BeanUtils#instantiateClass inlining with native #27072
- Remove support for deprecated Java SecurityManager #26901
- CommonAnnotationBeanPostProcessor jakarta.annotation-api:2.0.0 support (
@PostConstruct
/Predestroy) #26185 @Transactional
does not work on package protected methods of CGLib proxies #25582- Add support for explicit generic type in PayloadApplicationEvent #24599
- Add Kotlin extensions for Cache and CacheManager #23927
- JDK 11 HttpClient integration with WebClient #23432
@RequestMapping
without@Controller
registered as handler [SPR-17622] #22154- Upgrade Spring Context Support to Jakarta EE's com.sun.mail:jakarta.mail and com.sun.activation:jakarta.activation [SPR-17561] #22093
- Enable support for custom vnd types in messaging MappingJackson2MessageConverter [SPR-15712] #20269
- Add support for instant in
@DateTimeFormat
#19846 - Support YearMonth and MonthDay with the
@DateTimeFormat
annotation #1215
π Documentation
- Update javadoc and reference docs for consistent version and package references to the Jakarta EE 9 APIs #27689
- Use default stylesheet for generated Javadoc HTML #27496
π¨ Dependency Upgrades
- Support for Jakarta EE 9 (annotations and interfaces in jakarta.* namespace) #25354
- Support for Jetty 11 #27424
- Upgrade to AspectJ 1.9.8 for official Java 17 support #27537
- Upgrade to Kotlin 1.6.10 #27413
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
v5.3.14
β New Features
- Add default methods to CachingConfigurer #27811
- Provide a variant of ListableBeanFactory.findAnnotationOnBean(String, Class) that does not initialize factory beans #27796
- Convert single
null
argument toOptional.empty()
in SpEL varargs expression #27795 - Declare serialVersionUID on DefaultAopProxyFactory #27784
- The ReactorClientHttpConnector must apply mapper before tcpConfiguration() #27749
- Add getter for RequestMappingInfo builder config #27723
- Give warning when using capturing patterns with the AntPathMatcher #27688
- Support for customization of 404 response when RouterFunctionWebHandler finds no routes #25358
- ModelAndView.status does not work with RedirectView #25092
- ThreadPoolExecutorFactoryBean add ability to prestart threads #1246
- Support empty attributes in TagWriter #910
π Bug Fixes
- AsyncConfigurer implementations are loaded too early #27808
- Possible NPE in Spring MVC LogFormatUtils #27782
- Extending CachingConfigurerSupport results in at least one log message about not being eligible for full post-processing #27751
- WebFlux ServerResponse does not overwrite already present response headers #27741
- Passing single null value in varargs SpEL expression results in NullPointerException #27719
- UriUtils::extractFileExtension does not properly handle empty file names #27639
- References of CountingBeforeAdvice target its previous location #22246
- ProxyFactoryBean getObject called before setInterceptorNames, silently creating an invalid proxy [SPR-7582] #12238
π Documentation
- Remove references to AsyncConfigurerSupport as AsyncConfigurer should be used instead #27812
- Fix javadoc reference to ThrowsAdvice #27804
- Suggested WebSocket config causes circular bean reference #27746
- Document the difference in generics resolution between
@Autowired
andbeanFactory.getBeanProvider
#27727 - Clarify that interface-level cache annotations work for target-class proxies as well #27726
- SchedulerFactoryBean no longer sets the job store's
DataSource
when the job store class has been customized #27709 - Fix typo #27699
- Fix incorrect example of error handling in WebClient Javadoc #27645
- Missing reference documentation for WebSocketScope #25172
- Clarify behaviour of AnnotationBeanNameGenerator with acronyms #2030
- Fix simple data format in appendix #1025
- Update StoredProcedure.java declareParameter method JavaDoc #1000
- Document
@Bean
definitions via default methods #767 - Improved DataBinder Javadoc for xxx*yyy pattern matching. #699
π¨ Dependency Upgrades
- Upgrade to ASM 9.3 (for early Java 19 support) #27740
- Upgrade to JUnit 5.8.2 #27744
- Upgrade to Reactor 2020.0.14 #27793
β€οΈ Contributors
We'd like to thank all the contributors who worked on this release!
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