Skip to content

Releases: spring-projects/spring-framework

v6.0.0-M4

12 May 15:01
Compare
Choose a tag to compare
v6.0.0-M4 Pre-release
Pre-release

⭐ New Features

  • Add native hints for core annotations #28442
  • Add byte[] to supported types in SimpleJmsHeaderMapper #28421
  • Add RootBeanDefinition constructor that accepts a ResolvableType #28418
  • Add Throwable functional interfaces #28417
  • Support multiple SpringFactoriesLoader files #28416
  • Add position variant of ObjectUtils.addObjectToArray #28415
  • Support for Jakarta Concurrency 3.0 #28400
  • Add header resolver for HttpExchange method #28395
  • FormHttpMessageConverter should not have a dependency on the Jakarta Mail API #28392
  • Support to Create a Proxy From an Annotated HTTP Service Interface #28386
  • BeanRegistrationContributionProvider should have access to the bean factory #28384
  • Generate appropriate AOT bean registration for scoped proxies #28383
  • AOT contribution for @PersistenceContext and @PersistenceUnit #28364
  • Return UnmodifiableMap in MVC PathVariableMapMethodArgumentResolver #28352
  • Allow to register AotContributingBeanFactoryPostProcessor declaratively #28342
  • Allow to register reflection hints for multiple types at once #28339
  • Add support for HEAD methods in Spring's Resource handling #28291
  • Initialize NativeDetector at build time #28244
  • Support multiple segments in encoded Content-Disposition #28236
  • Introduce HttpStatusCode interface #28214
  • Introduce fluent API for search options in MergedAnnotations #28208
  • Introduce predicate for searching enclosing classes in MergedAnnotations #28207
  • Remove obsolete org.springframework.core.NestedIOException #28198
  • Enable access to an RFC 7807 ProblemDetail formatted error response from the client side #28190
  • Support "application/problem+json" as the response Content-Type #28189
  • Introduce RuntimeHintsRegistrar #28160
  • Ability to differentiate different causes for WebInputException #28142
  • Remove TYPE_HIERARCHY_AND_ENCLOSING_CLASSES search strategy for MergedAnnotations #28080
  • Deprecate SerializationUtils#deserialize #28075
  • MediaType parameters in the "consumes" condition of @RequestMapping are not considered for matching #28024
  • Introduce token-based consumption of multipart requests in WebFlux #28006
  • Automatically clean up multipart temp files #27633
  • Introduce removeApplicationListener in ConfigurableApplicationContext #14023

🐞 Bug Fixes

  • Use Arrays.toString for initMethodNames and destroyMethodNames arrays in AbstractBeanDefinition#toString #28427
  • Reflection configuration for primitives have wrong name #28347
  • GraalVM reflect config uses wrong format for inner classes #28312
  • Throw a meaningful exception if a TypeReference does not use a fully qualified name #28213
  • Fix queriedMethods handling in ReflectionHintsSerializer #28212
  • AntPathMatcher matches path with trailing slash differently if '**' is present in the pattern #27506

πŸ“” Documentation

  • Use "instanceof pattern matching" in sample in reference docs #28332
  • Add Javadoc since for BeanDefinitionValueResolver.resolveInnerBean() #28217

πŸ”¨ Dependency Upgrades

  • Upgrade to Kotlin 1.6.20 #28036
  • Upgrade to Reactor 2022.0.0-M2 #28365

❀️ Contributors

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

v5.3.20

11 May 07:32
Compare
Choose a tag to compare

⭐ New Features

  • Refine CachedIntrospectionResults property introspection #28445
  • Improve tests and Javadoc on binding to a property of type javax.servlet.Part #27830
  • WritableResource doesn't have parity with Resource in @Value etc. [SPR-10656] #15284

🐞 Bug Fixes

  • Ignore invalid STOMP frame #28443
  • @ModelAttribute name attribute is not supported in WebFlux #28423
  • Fix BindingResult error when ModelAttribute has custom name in WebFlux #28422
  • Request body deserialization failures are not captured by exception handlers in WebFlux #28155

πŸ“” Documentation

  • Remove Log4J initialization from package-info.java in spring-web #28420
  • Remove Log4J configurer from package-info.java in spring-core #28411
  • Fix github issue reference in RequestMappingHandlerMapping #28372
  • Add Javadoc since tags for GraphQL constants #28369
  • Fix method reference in Kotlin documentation #28340

πŸ”¨ Dependency Upgrades

  • Upgrade to ASM 9.3 #28390
  • Upgrade to Reactor 2020.0.19 #28437

❀️ Contributors

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

v5.2.22.RELEASE

11 May 07:55
Compare
Choose a tag to compare

⭐ New Features

  • Refine CachedIntrospectionResults property introspection #28446

🐞 Bug Fixes

  • Ignore invalid STOMP frame #28444

v5.3.19

13 Apr 10:10
Compare
Choose a tag to compare

⭐ New Features

  • Remove DNS lookups during websocket connection initiation #28280
  • Add application/graphql+json Media type and MIME type constants #28271
  • Fix debug log for no matching acceptableTypes #28116
  • Provide support for post-processing a LocalValidatorFactoryBean's validator Configuration without requiring sub-classing #27956

🐞 Bug Fixes

  • Improve documentation and matching algorithm in data binders #28333
  • NotWritablePropertyException when attempting to declaratively configure ClassLoader properties #28269
  • BeanPropertyRowMapper's support for direct column name matches is missing in DataClassRowMapper #28243
  • AbstractListenerReadPublisher does not call ServletOutputStream::isReady() when reading chunked data across network packets #28241
  • ResponseEntity objects are accumulated in ConcurrentReferenceHashMap #28232
  • Lambda proxy generation fix causes BeanNotOfRequiredTypeException #28209
  • CodeGenerationException thrown when using AnnotationMBeanExporter on JDK 17 #28138

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.18 #28329

❀️ Contributors

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

v5.2.21.RELEASE

13 Apr 10:47
Compare
Choose a tag to compare

⭐ New Features

  • Remove DNS lookups during websocket connection initiation #28281

🐞 Bug Fixes

  • Improve documentation and matching algorithm in data binders #28334
  • CodeGenerationException thrown when using AnnotationMBeanExporter on JDK 17 #28279
  • ResponseEntity objects are accumulated in ConcurrentReferenceHashMap #28273
  • NotWritablePropertyException when attempting to declaratively configure ClassLoader properties #28272

v5.3.18

31 Mar 09:41
Compare
Choose a tag to compare

⭐ New Features

  • Restrict access to property paths on Class references #28261
  • Introduce cancel(boolean mayInterruptIfRunning) in ScheduledTask #28233

🐞 Bug Fixes

  • Move off deprecated API in SessionTransactionData #28234

πŸ“” Documentation

  • Introduce warnings in documentation of SerializationUtils #28246
  • Update copyright date in reference manual #28237
  • @Transactional test does not execute all JPA lifecycle callback methods #28228

❀️ Contributors

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

v5.2.20.RELEASE

31 Mar 10:33
Compare
Choose a tag to compare

⭐ New Features

  • Restrict access to property paths on Class references #28262
  • Improve diagnostics in SpEL for large array creation #28257

v6.0.0-M3

17 Mar 10:30
Compare
Choose a tag to compare
v6.0.0-M3 Pre-release
Pre-release

⭐ New Features

  • Add types to represent RFC 7807 problem details and exceptions #28187
  • Update AOT processing to account for multiple init or destroy methods #28151
  • Introduce ApplicationContextAotGenerator #28150
  • Add GeneratedType infrastructure #28149
  • Add support for contributing runtime hints for generated code #28148
  • Replace KotlinBodySpec with proper ResponseSpec extensions #28144
  • Add GraalVM native JSON configuration generation #28131
  • Support for compiling and running generated code in tests #28120
  • Support for ImportAware in AOT-processed contexts #28111
  • Support type-safe transaction rollback rules #28098
  • Rationalise merged BeanDefinition resolution for inner beans #28093
  • Add API to contribute to the setup of an ApplicationContext #28088
  • Deprecate "enclosing classes" search strategy for MergedAnnotations #28079
  • Add support for refreshing an ApplicationContext for AOT processing #28065
  • Upgrade client support to R2DBC 0.9 #28059
  • Improve SpringFactories to customize how arguments and instantiation failures are handled #28057
  • Remove deprecated SocketUtils #28054
  • Add Bean instantiation generator infrastructure #28047
  • Add code contribution infrastructure #28030
  • Add core JavaPoet utilities #28028
  • Add support for registering multiple init & destroy method names #28013
  • HibernateJpaDialect compatibility with Hibernate 6 (read-only transactions etc) #28007
  • MissingServletRequestPartException extends ServletRequestBindingException #27948
  • Implement an AOT equivalent of AutowiredAnnotationBeanPostProcessor #27921
  • Add a way to register the need for runtime reflection, resources, proxying, and serialization on components #27829
  • Provide repackaged version of JavaPoet #27828
  • Allow @Async qualifier to be declared with a placeholder or SpEL expression #27818
  • Prevent @Bean method overloading by default (avoiding accidental overloading and condition mismatches) #22609

🐞 Bug Fixes

  • WebSocketConfigurationSupport.DefaultSockJsSchedulerContainer is private and exposed as a Bean #28146
  • Inconsistent overriding (and enforcement of non-overriding) between bean definition names and aliases #27866

πŸ”¨ Dependency Upgrades

  • Upgrade Kotlin to 1.6.20-RC #28147
  • Upgrade to AspectJ 1.9.8 GA #27416
  • Upgrade to Groovy 4.0 #27985

❀️ Contributors

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

v5.3.17

17 Mar 11:24
Compare
Choose a tag to compare

⭐ New Features

  • Using DataClassRowMapper causes "No property found for column" debug messages in logs #28179
  • Improve diagnostics in SpEL for large array creation #28145
  • Support custom HTTP status in client-side REST testing support #28105
  • AsyncRestTemplate logging too verbose #28049

🐞 Bug Fixes

  • java.lang.NoClassDefFoundError: org/springframework/cglib/beans/BeanMapEmitter #28110
  • CronExpression fails to calculate properly next execution when running on the day of winter daylight saving time #28095
  • Private init/destroy method may be invoked twice #28083
  • MappingJacksonValue and Jackson2CodecSupport#registerObjectMappersForType do not work together #28045
  • SpEL fails to recover from error during MIXED mode compilation #28043
  • When returning a ResponseEntity with a Flux while the function is suspended, it fails to encode the body #27809

πŸ“” Documentation

  • Improve documentation for @EnabledIf and @DisabledIf test support #28157
  • Links to Spring Security are broken in the reference guide #28135
  • Document that transaction rollback rules may result in unintentional matches #28125
  • Improve documentation for TestContext events #27757
  • Clarify behavior for generics support in BeanUtils.copyProperties #27259

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.17 #28064

❀️ Contributors

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

v5.3.16

17 Feb 09:04
Compare
Choose a tag to compare

⭐ New Features

  • Deprecate SocketUtils #28052
  • Add convenience factory method for ManagedList, ManagedSet and ManagedMap #28026
  • Synthesized annotation toString() doesn't match non-synthesized annotation on Java 9+ #28015
  • Add support for strict JSON comparison in WebTestClient #27993
  • Improve log message when searching for default executor for async processing #27983
  • Inconsistent behaviour in spring-orm between EntityManagerFactoryUtils.closeEntityManager() and SessionFactoryUtils.closeSession() #27972
  • Spring AOP cannot generate proxy for lambda on Java 16+ #27971
  • RestTemplate reading Json prohibits JDK HttpClient connection reuse (keep-alive) #27969
  • Deprecate AsyncTaskExecutor.execute(Runnable task, long startTimeout) #27959
  • Add CacheErrorHandler implementation that logs exceptions rather than rethrowing them #27826
  • Support for CGLIB BeanMap utility on JDK 17 #27802
  • Avoid message listener recovery in case of persistence exceptions from external transaction manager #1807

🐞 Bug Fixes

  • Fix CronExpression fails to calculate next execution on the day of daylight saving time #28044
  • CronExpression fails to calculate next execution on the day of daylight saving time #28038
  • Using recursive annotations in Kotlin causes stack overflow #28012
  • Add formatting for SockJS close GoAway frame to prevent infinite loop for xhr-polling and xhr-streaming transport #28000
  • Reflective method invocation does not detect interface method when interface is declared in a subclass (e.g. HashMap.HashIterator.hasNext) #27995
  • ReflectionUtils.USER_DECLARED_METHODS does not filter methods declared in java.lang.Object #27970
  • CronExpression doesn't handle Quartz weekday of month expressions correctly #27966
  • ServletServerHttpRequest getHeaders() throws IllegalArgumentException instead of ignoring invalid content type / #27957
  • PropertySourcesPlaceholderConfigurer ignores ignoreUnresolvablePlaceholders flag #27947
  • Fix regression in BeanPropertyRowMapper regarding underscore name #27941
  • WebClient corrupts binary data when trying to upload many files #27939
  • Spring fails to determine XML is XSD-based if DOCTYPE appears in a comment #27915
  • ResourceHttpRequestHandler with PathPatternParser cannot resolve resources with a jsessionid URL #27913

πŸ“” Documentation

  • Improve documentation for uri(URI) method in WebTestClient regarding base URI #28058
  • Polish reference docs (core) #28004
  • Fix ServletUriComponentsBuilder examples in ref docs #27984
  • Improve documentation for implementing AspectJ around advice #27980
  • Fix CaffeineCacheManager configuration in the documentation #27967
  • Fix Javadoc links to JSR 305 annotations #27904
  • Document how to register annotated classes with a GenericWebApplicationContext #27778

πŸ”¨ Dependency Upgrades

  • Upgrade to Reactor 2020.0.16 #28039

❀️ Contributors

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