Spring Framework - v6.0.3

:star: New Features

  • Throw PessimisticLockingFailureException/CannotAcquireLockException instead of plain ConcurrencyFailureException #29675
  • Introduce additional constructors in MockClientHttpRequest and MockClientHttpResponse #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

:lady_beetle: 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 from ErrorResponse#getHeaders #29626
  • URI override for @HttpExchange doesn't work if there are both URI 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

:notebook_with_decorative_cover: 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

:hammer: 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

:heart: 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


Dec. 15, 2022, 9:31 a.m.
Register or login to:
  • 🔍View and search all Spring Framework releases.
  • 🛠️Create and share lists to track your tools.
  • 🚨Setup notifications for major, security, feature or patch updates.
  • 🚀Much more coming soon!
Continue with GitHub
Continue with Google