Skip to content

Releases: spring-projects/spring-framework

v6.0.4

11 Jan 13:05
Compare
Choose a tag to compare

⭐ 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

  • Upgrade to Micrometer 1.10.3 #29802
  • Upgrade to Reactor 2022.0.2 #29797

❤️ Contributors

Thank you to all the contributors who worked on this release:

@Dunemaster, @IDJack, @diguage, @izeye, and @quim3ra

v5.3.25

11 Jan 13:06
Compare
Choose a tag to compare

⭐ 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 catch Throwable for SourceHttpMessageConverter #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

15 Dec 09:31
Compare
Choose a tag to compare

⭐ 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

🐞 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

📔 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

24 Nov 14:22
Compare
Choose a tag to compare

⭐ 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

23 Nov 10:35
Compare
Choose a tag to compare

⭐ 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

  • Upgrade to Jackson 2.14.1 #29539
  • Upgrade to Kotlin 1.7.21 #29543

❤️ Contributors

Thank you to all the contributors who worked on this release:

@Encyclopedias, @andregasser, @davidcostanzo, @divcon, @jiangying000, @mdeinum, and @wilkinsona

v6.0.0

16 Nov 11:09
Compare
Choose a tag to compare

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

16 Nov 08:27
Compare
Choose a tag to compare

⭐ 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

09 Nov 13:06
Compare
Choose a tag to compare
v6.0.0-RC4 Pre-release
Pre-release

⭐ 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

03 Nov 13:47
Compare
Choose a tag to compare
v6.0.0-RC3 Pre-release
Pre-release

⭐ 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 from spring.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 and ProblemDetail 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:

@fmbenhassine, @imkulwant, @izeye, and @marcingrzejszczak

v6.0.0-RC2

20 Oct 13:10
Compare
Choose a tag to compare
v6.0.0-RC2 Pre-release
Pre-release

⭐ 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 GraalVM FieldValueTransformer 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 custom ObjectMapper 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 in RuntimeHintsRegistrar Javadoc #29337
  • Add Javadoc since for SimpleInstantiationStrategy.setCurrentlyInvokedFactoryMethod() #29326
  • Use correct RFC number for ProblemDetail support in Javadoc #29302

🔨 Dependency Upgrades

  • Upgrade to Derby 10.16 #29344
  • Upgrade to GraalVM 22.3.0 #29080
  • Upgrade to Jackson 2.14.0-rc2 #29343

❤️ Contributors

We'd like to thank all the contributors who worked on this release!