Skip to content

Releases: spring-projects/spring-framework

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!

v6.0.0-M2

13 Jan 11:05
Compare
Choose a tag to compare
v6.0.0-M2 Pre-release
Pre-release

⭐ 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

  • Upgrade to Kotlin Coroutines 1.6.0 #27878
  • Upgrade to Kotlin serialization 1.3.2 #27879

❤️ Contributors

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

v5.3.15

13 Jan 12:23
Compare
Choose a tag to compare

⭐ 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

16 Dec 14:32
Compare
Choose a tag to compare
v6.0.0-M1 Pre-release
Pre-release

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

16 Dec 09:09
Compare
Choose a tag to compare

⭐ 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 to Optional.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 and beanFactory.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!