Releases: spring-projects/spring-framework
v6.0.4
⭐ New Features
- Add native support for
@Convert
on JPA entities #29771 @RequestPart
dto not configured for reflection in aot #29749- Avoid wasted memory on empty maps and sets #29742
- Compatibility with Hibernate ORM 6.2 #29736
- Add Kotlin DSL support for MockMVC andExpectAll #29727
- Add ExecutingResponseCreator to delegate request and response #29721
- JmsTemplate.convertAndSend throws NullPointerException during shutdown #29706
- Extract ResourceEntityResolver HTTPS schema resolution fallback #29697
@Configuration
classes with Kotlin in native-image are broken #29663- Introduce Kotlin DSL for
ResultActions.andExpectAll()
#27317
🐞 Bug Fixes
- ResourceHandlers cannot resolve static resources with certain wildcard patterns #29712
- Conflict on insert gets translated to DataIntegrityViolationException instead of DuplicateKeyException in Spring 6 #29699
📔 Documentation
- fix typo in core-aot.adoc #29788
- Polish #29727: Mention Kotlin andExpectAll in reference manual #29766
- Update Jakarta Mail info in ref docs #29707
- Trigger/TriggerContext reference documentation outdated #29702
- Improve documentation for literals in SpEL expressions #29700
- Small fixes and improvements to the reference documentation #29694
- Fix manipulating property sources example in Javadoc for
ConfigurableEnvironment
#29693
🔨 Dependency Upgrades
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Dunemaster, @IDJack, @diguage, @izeye, and @quim3ra
v5.3.25
⭐ New Features
- JmsTemplate.convertAndSend throws NullPointerException during shutdown #29719
- Optimize object creation in RequestMappingHandlerMapping#handleNoMatch #29667
- Add title to SockJS iFrames for accessibility compliance #29596
🐞 Bug Fixes
- ResourceHandlers cannot resolve static resources with certain wildcard patterns #29716
- AnnotatedElementUtils.findMergedRepeatableAnnotations does not fetch results when other attributes exist for container annotation #29686
- BeanWrapperImpl NPE in setWrappedInstance after invoking getPropertyValue (with SimpleBeanInfoFactory) #29684
- SpEL
ConstructorReference
does not generate AST representation of arrays #29666 - SpEL: Two double quotes are replaced by one double quote in single quoted
String
literal (and vice versa) #29653 - SpEL string literal misses single quotation marks in toStringAST() #29652
- 500 error from WebFlux when parsing Content-Type leads to InvalidMediaTypeException #29637
WebMvcConfigurationSupport
should not catchThrowable
forSourceHttpMessageConverter
#29537
📔 Documentation
- Update Jakarta Mail info in ref docs #29708
- Improve documentation for literals in SpEL expressions #29701
- Fix some typos in Kotlin WebClient example code #29542
- Fix link to Bean Utils Light Library in BeanUtils Javadoc #29536
- Fix link to WebFlux section in reference manual #29526
- Link to Spring WebFlux section is broken #29517
🔨 Dependency Upgrades
- Upgrade to Reactor 2020.0.27 #29798
v6.0.3
⭐ New Features
- Throw PessimisticLockingFailureException/CannotAcquireLockException instead of plain ConcurrencyFailureException #29675
- Introduce additional constructors in
MockClientHttpRequest
andMockClientHttpResponse
#29670 - Fall back to JdkClientHttpConnector as ClientHttpConnector #29645
- Optimize object creation in
RequestMappingHandlerMapping#handleNoMatch
#29634 - Align multipart codecs on client and server #29630
- Deprecate "application/graphql+json" media type after spec changes #29617
- HTTP interface client does not call FormHttpMessageWriter when writing form data #29615
- ProblemDetail doesn't override the equals method #29606
- Add title to SockJS iFrames for accessibility compliance #29594
- Forbid loading of a test's
ApplicationContext
in AOT mode if AOT processing failed #29579 - Deprecate JettyWebSocketClient in favor of StandardWebSocketClient #29576
- Improve options to expose MessageSource formatted errors for a ProblemDetail response #29574
- Make
@ModelAttribute
and@InitBinder
annotations@Reflective
#29572 - Update
BindingReflectionHintsRegistrar
to support properties on records #29571
🐞 Bug Fixes
- Cannot use WebDAV methods in Spring MVC 6.0 anymore #29689
- AnnotatedElementUtils.findMergedRepeatableAnnotations does not fetch results when other attributes exist in container annotation #29685
- BeanWrapperImpl NPE in setWrappedInstance after invoking getPropertyValue #29681
- SpEL
ConstructorReference
does not generate AST representation of arrays #29665 - NullPointerException in BindingReflectionHintsRegistrar for anonymous classes #29657
- DataBufferInputStream violates InputStream contract #29642
- Component scanning no longer uses component index for
@Named
,@ManagedBean
, and other Jakarta annotations #29641 - Fix canWrite in PartHttpMessageWriter #29631
NoHandlerFoundException
mistakenly returns request headers fromErrorResponse#getHeaders
#29626- URI override for
@HttpExchange
doesn't work if there are bothURI
and@PathVariable
method parameters #29624 - Unnecessary parameter name introspection for constructor-arg resolution (leading to LocalVariableTableParameterNameDiscoverer warnings) #29612
- Set detail from reason in both constructors of ResponseStatusException #29608
- SpEL string literal misses single quotation marks in toStringAST() #29604
- AOT code generation fails for bean of type
boolean
#29598 request
-scoped bean with@Lazy
fails in native image (due to missing detection of CGLIB lazy resolution proxies) #29584- 500 error from WebFlux when parsing Content-Type leads to InvalidMediaTypeException #29565
- ConcurrentLruCache implementation is using too much heap memory #29520
- Duplicate key violation gets translated to DataIntegrityViolationException instead of DuplicateKeyException in Spring 6 #29511
- SpEL: Two double quotes are replaced by one double quote in single quoted
String
literal (and vice versa) #28356
📔 Documentation
- Fix ErrorResponse#type documentation #29632
- Fix typo in observability documentation #29590
- Consistent documentation references to Jakarta WebSocket (2.1) #29581
- Unrendered asciidoc headings in reference documentation #29569
- Document observability support #29524
🔨 Dependency Upgrades
- Upgrade to Apache HttpClient 5.2 #29627
- Upgrade to Gradle 7.6 #29583
- Upgrade to Micrometer 1.10.2 #29678
- Upgrade to Reactor 2022.0.1 #29679
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Aashay-Chapatwala, @CoderYellow, @ShenFeng312, @Spark61, @divcon, @izeye, @koo-taejin, @mdeinum, @mhalbritter, @quaff, and @singhbaljit
v6.0.2
⭐ New Features
- Rely on standard parameter name resolution in Bean Validation 3.0 #29566
🐞 Bug Fixes
- ResponseStatusException does not use the reason to set the "detail" field #29567
- LocalVariableTableParameterNameDiscoverer logs many warnings with Hibernate validation #29563
📔 Documentation
- org.springframework.web.multipart.commons not found #29562
v6.0.1
⭐ New Features
- Make
SourceHttpMessageConverter
optional #29535 - Deprecate
LocalVariableTableParameterNameDiscoverer
completely (avoiding its exposure in native images) #29531 - Make GeneratorStrategy.generate unreachable on native #29521
- Update
LogAdapter
to allow build-time code removal #29506
🐞 Bug Fixes
- Unhandled exceptions should mark Servlet observation outcome as error #29512
📔 Documentation
- Broken link in documentation section 6.10 #29554
- Fix Javadoc link text in BindingResult #29551
- Fix some typos in Kotlin WebClient example code #29538
- Fix link to Bean Utils Light Library in BeanUtils Javadoc #29534
- Fix link to WebFlux section in reference manual #29525
- Document RuntimeHints testing strategies #29523
- Reorganize and modularize the Testing chapter in the reference manual #29522
- Document switch to
SQLExceptionSubclassTranslator
in the upgrade guide #29518 - Update documentation to mention Java 17+ baseline #29514
- Link to Spring WebFlux section is broken #29513
- Update javadoc of Jackson-based decoders to reflect 2.14 baseline #29508
- Code example has callout from a different code example #29505
- Code listing callouts are displayed incorrectly in core-beans.adoc #29457
- Fix a syntax error in an XML listing in core-validation.adoc #29456
🔨 Dependency Upgrades
❤️ Contributors
Thank you to all the contributors who worked on this release:
@Encyclopedias, @andregasser, @davidcostanzo, @divcon, @jiangying000, @mdeinum, and @wilkinsona
v6.0.0
See What's New in Spring Framework 6.x and Upgrading to Spring Framework 6.x for upgrade instructions and details of new features.
⭐ New Features
- Avoid direct URL construction and URL equality checks #29486
- Simplify creating RFC 7807 responses from functional endpoints #29462
- Allow test classes to provide runtime hints via declarative mechanisms #29455
📔 Documentation
- Align javadoc of DefaultParameterNameDiscoverer with its behavior #29494
- Document AOT support in the TestContext framework #29482
- Document Ahead of Time processing in the reference guide #29350
🔨 Dependency Upgrades
- Upgrade to Reactor 2022.0.0 #29465
❤️ Contributors
Thank you to all the contributors who worked on this release:
@ophiuhus and @wilkinsona
v5.3.24
⭐ New Features
- Avoid reflection for annotation method invocations #29448
- Avoid unnecessary allocations in StompDecoder#unescape #29443
- Avoid String allocations in MediaType.checkParameters #29428
- Reduce allocations caused by producible media types #29412
- Provide optional SimpleBeanInfoFactory for better introspection performance in 5.3.x #29330
- Filter out
null
WebSocket session attributes #29315 - Introduce TestSocketUtils as a replacement for SocketUtils #29132
- Avoid Commons Logging API for using LoggingCacheErrorHandler with a custom logger #28678
🐞 Bug Fixes
- Missing SessionFactory property (filter AutoCloseable from PropertyDescriptors) #29480
- SpEL ternary and Elvis expressions are missing enclosing parentheses in toStringAST() #29463
- If-Unmodified-Since header check removes Last-Modified and Etag headers from response, even if condition passes #29362
- Annotation searches fail for non-public repeatable annotations #29301
- AbstractBeanFactory's interaction with BeanPostProcessorCacheAwareList is not fully thread-safe #29299
- WebTestClient cannot assert custom HTTP status code #29283
- Body token not expected error when trying to upload a large multipart file #29227
- Avoid resizing of Maps created by CollectionUtils #29190
- DefaultWebClient logging sensitive information in URI #29148
- Fix SimpleMailMessage nullability annotations #29139
- Webflux fails to apply the rule for controller methods returning void to kotlin suspend functions returning Unit #27629
- Resource.isFile() return true when the resource path actually not exists #26707
- AnnotatedElementUtils does not find merged repeatable annotations on other repeatable annotations #20279
📔 Documentation
- Fix two typos in integration.adoc and webflux.adoc #29469
- Fix typo: "as describe in" -> "as described in" #29393
- Fix typos #29364
- Correct documentation for "other return values" from a web controller method #29349
- Document how to use WebJars without
webjars-locator-core
dependency #29322 - Update RestTemplate Javadoc with regards to setting interceptors on startup vs at runtime #29311
- Document how to switch to the default set of TestExecutionListeners #29281
- Document limitation of AopTestUtils.getUltimateTargetObject() regarding non-static TargetSource #29276
- Fix typo in WebSocket reference doc regarding subscription header #29228
- Fix MockMvc sample setup #29201
🔨 Dependency Upgrades
- Upgrade to Reactor 2020.0.25 #29464
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v6.0.0-RC4
⭐ New Features
- Introduce DataFieldMaxValueIncrementer for SQL Server sequences #29447
- Introduce findAllAnnotationsOnBean variant on ListableBeanFactory #29446
- Introduce support for Jakarta WebSocket 2.1 #29436
- Allow
@ControllerAdvice
in WebFlux to handle exceptions before a handler is selected #22991
🐞 Bug Fixes
- Bean with unresolved generics do not use fallback algorithms with AOT #29454
- TomcatRequestUpgradeStrategy is not compatible with Tomcat 10.1 #29434
- Autowiring of a generic type produced by a factory bean fails after AOT processing #29385
📔 Documentation
- Reference PDF containing full docs not available #28451
🔨 Dependency Upgrades
- Revisit Servlet API baseline: Servlet 6.0 in the build, Servlet 5.0 compatibility at runtime #29435
- Upgrade to Context Propagation 1.0.0 #29442
- Upgrade to Jackson 2.14.0 #29351
- Upgrade to Micrometer 1.10.0 #29441
❤️ Contributors
Thank you to all the contributors who worked on this release:
@divcon, @fmbenhassine, @imkulwant, @izeye, and @wilkinsona
v6.0.0-RC3
⭐ New Features
- Support
@RequestPart
arguments for@HttpExchange
methods #29420 - Processing of charset in Content-Type Header not case-insensitive #29416
- Allow for external customization and i8n of the "title" of an RFC 7807 response #29407
- Automatically register directories for registered resource hints #29403
- Allow registration of resource hint for root directory #29402
- Load
ApplicationContextFailureProcessor
implementations fromspring.factories
#29387 - Simplify mapping of custom exception to an RFC 7807 response in ResponseEntityExceptionHandler #29384
- Introduce SimpleValueStyler for use with ToStringCreator #29381
- Make DefaultValueStyler extensible #29380
- Introduce DataFieldMaxValueIncrementer for MariaDB #29379
- Handle case where
ResponseEntity
andProblemDetail
don't agree on the HTTP status to use #29378 - Provide AOT support for
HttpServiceProxyFactory
clients #29271 - Revise logging in the TestContext framework #29229
🐞 Bug Fixes
- Align server observation contextual names with OTel semantic conventions #29424
- Matching path pattern is not set in reactive ServerRequestObservationContext #29422
- PartEvent upload fails with JdkClientHttpConnector #29400
- Native image FileSystem should not be closed after classpath scanning #29397
- AOT processing loses bean aliases #29391
- WebClient and WebFlux Observation do not propagate context #29388
- HttpServiceProxyFactory raises IllegalStateException if created through the builder and declared as a bean #29376
- Multiple
@ImportRuntimeHints
in the type hierarchy should be supported #29361
🔨 Dependency Upgrades
- Upgrade to Jackson 2.14.0-rc3 #29405
❤️ Contributors
Thank you to all the contributors who worked on this release:
v6.0.0-RC2
⭐ New Features
- Ensure classpath checks can be evaluated at build-time #29352
- Register reflection hints for JPA persistence callbacks #29348
- Check
@RegisterReflectionForBinding
specifies at least one class #29346 - Introduce builder API for AOT processor Settings #29341
- Allow in-progress AOT processing to be detected #29340
- Reorganize HTTP Observation types #29334
- Perform basic property determination without java.beans.Introspector #29320
- Add Kotlin data class components support to
BindingReflectionHintsRegistrar
#29316 - Switch HttpServiceFactory and RSocketServiceProxyFactory to builder model for programmatic configuration first #29296
- Introduce
PreComputeFieldFeature
based on GraalVMFieldValueTransformer
API #29081 - Introduce SPI for processing ApplicationContext failures in the TestContext framework #28826
- SimpleEvaluationContext should disable array allocation #28808
- DateTimeFormatterRegistrar should fall back to ISO parsing by default #26985
🐞 Bug Fixes
- Avoid NPEs in DefaultServerRequestObservationConvention #29359
- ServerHttpObservationFilter can throw ClassCastException when NoopObservation used #29356
- ServerHttpObservationFilter should not overwrite response status #29353
- Possible regression in PathMatchingResourcePatternResolver #29333
- Jackson
Decoder
ignores method parameter information when resolving media types for customObjectMapper
registration #29307 - Deprecation warning for composed Bean Validation constraint annotation #29206
- Code generation no longer supports a list of inner BeanDefinitions #29075
- NamedParameterUtils has broken square brackets handling #27925
📔 Documentation
- Refine
@RegisterReflectionForBinding
Javadoc #29345 - Mention
@ImportRuntimeHints
inRuntimeHintsRegistrar
Javadoc #29337 - Add Javadoc since for SimpleInstantiationStrategy.setCurrentlyInvokedFactoryMethod() #29326
- Use correct RFC number for ProblemDetail support in Javadoc #29302
🔨 Dependency Upgrades
❤️ Contributors
We'd like to thank all the contributors who worked on this release!