Releases: spring-projects/spring-framework
Releases · spring-projects/spring-framework
v5.2.21.RELEASE
⭐ 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
⭐ 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
v6.0.0-M3
⭐ 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
extendsServletRequestBindingException
#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
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.3.17
⭐ 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
⭐ 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
⭐ 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
❤️ Contributors
We'd like to thank all the contributors who worked on this release!
v5.3.15
⭐ 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
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
⭐ 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 toOptional.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
andbeanFactory.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!