Releases: spring-projects/spring-framework
Releases Β· spring-projects/spring-framework
v6.2.0-M5
β New Features
- Harmonize handling of current factory method in SimpleInstantiationStrategy #33192
- Unwrap
InvocationTargetException
in SpEL'sFunctionReference
#33174 - Support rendering multiple fragments #33162
- Allow MessageHeaderAccessor to be created with existing headers #33153
- Generalize message conversion for HTTP message content in AssertJ support #33148
- Allow arbitrary packages to be scanned for Reflective usage #33132
- Support external methods referenced by fully-qualified name in
@TestBean
#33125 - Update
Content-Type
based onencoding
in MVCFreeMarkerView
#33119 - Introduce
SmartHttpMessageConverter
#33118 - Support property placeholders in
@Sql
script paths #33114 - Reject
ModelMap
argument types in WebFlux #33109 - Set
output_encoding
inFreeMarkerView
implementations #33106 - Allow encoding to be set with a
Charset
in FreeMarker support #33102 - Let custom
ObjectProvider
implementations declare a single method only #33070 - Add support for running assertions on resolved exception in MockMvcTester #33060
- Add dedicated support for printing the MvcResult in MockMvcTester #33059
- Provide a way to determine if a context is in the process of being closed #33058
- MockHttpServletRequestBuilder should merge URI from the parent if necessary #33057
- Fail fast if a
@Bean
method declares@Autowired
as well #33051 - Add dedicated async dispatch support for MockMvcTester #33040
- Add dedicated multipart support for MockMvcTester #33027
- spring-form JSP tags should escape HTML value based on response character encoding #33023
- SimpleClientHttpResponse throws IOException when response body is empty and status code is >= 400 #33020
MockHttpServletResponse
defaults to ISO-8859-1 for JSON while the rest of the framework defaults to UTF-8 #33019- Propagate context to message converters when streaming with Flux in Spring MVC #32813
- Resolve URI to baseUrl in RestClient #32679
- Constructor data binding support for List, Map and array arguments #32426
- Implement Eclipse Jetty core HTTP handler adapter #32097
- Add better control over generated files registration #31331
- Provide more declarative control over reflection hint registration #29194
- Replace
@Nonnull(when = When.MAYBE)
by@CheckForNull
in@Nullable
#27183 - Add JSON support to Protobuf codecs #25457
π Bug Fixes
- AntPathPatternMatcher hardcoded "/" separator in variables matching and comparator #33085
- AOT generates a raw type for a generic type with nested unresolved generics #33069
- Unwrap Kotlin inline value classes return values #33026
- Kotlin Serialization support does not take null-safety into account #33016
π Documentation
- Move Testing below other framework concerns in the reference documentation TOC #33083
- Move Servlet HTTP Message Conversion to its own section #33063
- Document AssertJ support for MockMvc #32454
π¨ Dependency Upgrades
- Upgrade to HtmlUnit 4.2.0 #33081
- Upgrade to Kotlin Coroutines 1.8.1 #33176
- Upgrade to Micrometer 1.14.0-M1 #33170
- Upgrade to Reactor 2024.0.0-M4 #33171
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
v6.1.11
β New Features
- Ensure varargs component type for
MethodHandle
is notnull
in SpEL'sReflectionHelper
#33193 - Confusing WebClient exception message in case of Reactor-Netty
PrematureCloseException
during response #33127 - Include the bean name in the exception when an invalid factoryBeanObjectType attribute is found #33117
- Use error handler for reactive cache aspect #33073
getTypeForFactoryMethod
should catchNoClassDefFoundError
#33075
π Bug Fixes
- SpEL cannot invoke varargs
MethodHandle
function with an array #33191 - SpEL cannot invoke varargs
MethodHandle
function with zero variable arguments #33190 - Nested bean instance supplier invocation does not retain previous factory method #33180
- DefaultErrorResponseBuilder does not implement headers(Consumer) #33156
- Fix adaptation of violations on Set method parameter #33150
- Web controller call with invalid body resulting in 500 instead of 400 when using kotlinx-serialization #33138
- "file:." cannot be resolved to
java.nio.file.Path
(and plain "." value resolves to classpath root) #33124 - Mockito mock falsely initialized as CGLIB proxy with AspectJ aspect #33113
- Fix ClassCastException from return value validation with proxy when adaptConstraintViolations=true #33105
- Spring coroutines AOP is not compatible with
@Transactional
#33095 - ReactorClientHttpConnector creates new HttpClient for every request #33093
- Trace and Span IDs are no longer propagated RequestBodyAdvice beans #33091
- Early
LocalContainerEntityManagerFactoryBean
initialization fails in case of null bean definition #33082 ReactorNettyClientRequest.convertException
should include original exception if cause isnull
#33080- SpEL incorrectly splits string arguments by comma for
Object...
varargs method #33013 - ProtobufMessageConverter fails to parse JSON payload if byte array is used #27408
π Documentation
- Harmonize phrasing in URI Encoding section #33166
- Document that
ModelMap
is not a supported argument type in WebFlux #33107 - Example in Method Injection section of Spring Framework documentation refers to wrong bean names #33096
- Resource writer doesn't consider subclasses of
InputStreamResource
for content length bypass #33089 - Improve documentation regarding encoding in FreeMarker support #33071
- Exception for validation failure in WebFlux does not match the documentation #33061
π¨ Dependency Upgrades
- Upgrade to Kotlin 1.9.24 #33177
- Upgrade to Kotlin Serialization 1.6.3 #33175
- Upgrade to Micrometer 1.12.8 #33168
- Upgrade to Reactor 2023.0.8 #33169
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@TAKETODAY, @hunhee98, @imvtsl, @snussbaumer, and @zizare
v6.1.10
β New Features
- Defensive
PersistenceExceptionTranslator
bean retrieval inPersistenceExceptionTranslationInterceptor
on shutdown #33067 - Support all "connection reset" exception phrases in
DisconnectedClientHelper
#33064
π Bug Fixes
- Duplicate observations recorded with RestClient #33068
- WebFlux validation requires Servlet API since Spring Framework 6.1.3 #33043
- No qualifying bean of type 'java.lang.String' in case of accidental
@Autowired
@Bean
method with@Value
parameter #33030 - ConfigurationClassEnhancer does not use correct ClassLoader when called multiple times #33024
π Documentation
- Typo in Annotation-driven Listener Endpoints section of Spring Framework documentation #33050
- Container Extension Points section of Spring Framework documentation refer to the wrong property name #33037
- Fix typo in comment #33036
- Incorrect constructor details in the javadoc for ApplicationContextEvent #33032
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
v6.2.0-M4
β New Features
- Add support for converting the whole JSON document without using JSONPath #33018
- Support Protobuf 4.x #33011
- Do not swallow exceptions on failing to release a savepoint #32992
- Being able to provide extended timeouts for specific phases in the DefaultLifecycleProcessor #32985
- Allow json content to be converted using AssertJ's AssertFactory #32953
- Add support for
BeanPostProcessor
defined in Kotlincompanion object
#32946 - Support
@TestBean
factory methods defined in interfaces #32943 - Add a way to set the timeout to reactive jdk client #32941
- Revise convention-based semantics for
@TestBean
factory methods #32940 - Support field name as fallback qualifier for
@TestBean
,MockitoBean
, andMockitoSpyBean
#32939 - Use getMessageSource internally in RequestContext #32926
- MockMvc no longer needs methods that take a String httpMethod for custom methods #32914
- Allow MockMvcTester to prepare the query without the need of static imports #32913
- Rework Bean Overriding feature to better behave with TCF Context Caching #32884
- Introduce API to initialize
BeanFactory
before singleton instantiation #32836 - Introduce static
MultiValueMap
factory methods #32832 - Make use of JSONAssert in public API optional #32791
- Refine exception handling in AOT process to provide additional context #32777
- Handle ResponseStatusException thrown by MVC functional endpoints #32689
- Support data binding from request headers #32676
- Ignore trailing semicolons when parsing Accept-Language header #32259
- Introduce request attributes in RestClient #32027
- Make WebSocketMessageBrokerStats optionally export stats to micrometer #31604
- Add Partitioned cookie attribute support for reactive servers #31454
- Add execution metadata to scheduled tasks #24560
π Bug Fixes
- Exception that prevents component scan with REGISTER_BEAN conditions should provide the affected configuration class #32998
- Bean override with REPLACE_OR_CREATE_DEFINITION and byType lookup fails if no match is found #32990
- Bean override factory post processing doesn't work with
FactoryBean
#32971 @TestBean
factory method not found in multi-level@Nested
hierarchy #32951- Support queries in opaque URLs #32920
- AbstractJsonContentAssert should allow satistfies to run on the json content, not the raw string #32894
- Content negotiation for exception handling fails with WebFlux #32878
π Documentation
- Fix typo in WebTestClient expectedXml #32969
π¨ Dependency Upgrades
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@AlexejTimonin, @andreblanke, @ccorbacho, @earlgrey02, @izeye, @m4tt30c91, and @schnapster
v6.1.9
β New Features
- CRaC: ignore checkpointOnRefresh afterRestore #32978
- Add missing hints for Hibernate
@TenantId
#32967 - AnnotationUtils performance degrades with deep stacks #32921
- Missing hints for Hibernate generators #32842
- AbstractAutoProxyCreator#determineBeanType can trigger bean initialization at build time for aspects implementing Ordered #32230
π Bug Fixes
- Behaviour change in ScheduledAnnotationBeanPostProcessor: canceling scheduled tasks on ContextClosedEvent v6.0 -> v6.1 #33009
- ContentCachingRequestWrapper may allocate too much memory #32987
- Support
canEncode()
forJAXBElement
inJaxb2XmlEncoder
#32977 - AspectJ CTW aspects executed twice #32970
@Valid
annotations on container elements for handler argument validation not supported #32964- Add support for double backslashes to
StringUtils#cleanPath
#32962 @CacheEvict
condition uses wrapper comparison instead of actual objects #32960- ConcurrentHashMap.computeIfAbsent used in AdvisedSupport can cause virtual thread pinning #32958
- Exception mapping does not work as expected when plugging in ReactorNettyClientRequestFactory into RestTemplate and RestClient #32952
ReactorResourceFactory
not working with CRaC onRefresh checkpoint #32945- SpEL compilation fails when indexing into an array or list with an
Integer
#32908 - SpEL compilation fails when indexing into a
Map
with a primitive #32903 - BeanUtils.copyProperties no longer copies generic type properties from a base class that has been enhanced #32888
- Application not starting with
@EnableTransactionManagement
(mode = AdviceMode.ASPECTJ) #32882 - ReactorNettyClientResponse should not throw exception if no body is available #32805
- Observation in ServerHttpObservationFilter is never stopped for asynchronous requests #32730
π Documentation
- Fix typo in the Simple Broker section of the reference documentation #32993
- Remove outdated copyright from index.adoc #32983
- Use HttpStatusCode consistently in reference guide #32966
- Entity name in MappingSqlQuery example of reference guide is wrong #32957
- Fix
RegisterReflectionForBinding
Javadoc #32947 - Reference documentation sample for
MethodValidationPostProcessor
is missing astatic
keyword #32929 - Fix typo in Jakarta validation documentation #32928
- Refine
KotlinDetector.isKotlinType
documentation for Kotlin 2.x lambdas #32905 - Complete Kotlin example for HTTP message codecs in reference doc #32877
- Use Threadlocal.remove() instead of .set(null) in documentation #32874
- Unexpected bean override / inject behavior #32825
- Document why complex object structure are not supported as paremeters or properties by AOT #32273
π¨ Dependency Upgrades
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@Attacktive, @Seungpang, @deblockt, @hlmg, @ozooxo, @soglad, and @ypyf
v6.0.22
β New Features
- AnnotationUtils performance degrades with deep stacks #32922
π Bug Fixes
- Observation in ServerHttpObservationFilter is never stopped for asynchronous requests #32986
- AspectJ CTW aspects executed twice #32973
- SpEL compilation fails when indexing into a
Map
with a primitive #32912 - SpEL compilation fails when indexing into an array or list with an
Integer
#32910 - Application not starting with
@EnableTransactionManagement
(mode = AdviceMode.ASPECTJ) #32883
π Documentation
- Remove outdated copyright from index.adoc #32984
π¨ Dependency Upgrades
- Upgrade to Reactor 2022.0.20 #33008
v5.3.37
β New Features
- AnnotationUtils performance degrades with deep stacks #32923
π Bug Fixes
- AspectJ CTW aspects executed twice #32974
- SpEL compilation fails when indexing into a
Map
with a primitive #32911 - SpEL compilation fails when indexing into an array or list with an
Integer
#32909 - Application not starting with
@EnableTransactionManagement
(mode = AdviceMode.ASPECTJ) #32885
π¨ Dependency Upgrades
- Upgrade to Reactor 2020.0.45 #33010
v6.2.0-M3
β New Features
- Lazily register
DynamicValuesPropertySource
in the TestContext framework #32871 - Introduce getRequest and getResponse on MvcTestResult #32846
- Add support for qualifiers in test bean overriding and consider improving by-type matching #32822
- Support Content Negotiation and view rendering in ResponseEntityExceptionHandler #31936
π Bug Fixes
- Change default phase for STOMP message handling components to be ahead of Boot's WebServerStartStopLifecycle default phase #27519
v6.1.8
β New Features
- Avoid creation of SAXParserFactory for every read operation in Jaxb2Marshaller and co #32851
- Suppress deprecation warning for AOT-generated code that refers to a deprecated bean type #32850
π Bug Fixes
- Overridden aspect method runs twice #32865
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE\_TIME)
cannot convert UTC without milliseconds tojava.util.Date
#32856- Spring AOP fails against registered
@Configurable
aspect #32838 - MockHttpServletRequest should not use a shared reader when no content is available #32820
π Documentation
- Modernize Antora Build #32864
- Modernize Antora Build #32863
- Refine CDS documentation #32843
- Revisit validation documentation to better explain when method validation is invoked #32807
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
v6.0.21
β New Features
- Avoid creation of SAXParserFactory for every read operation in Jaxb2Marshaller and co #32855
π Bug Fixes
- Overridden aspect method runs twice #32867
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE\_TIME)
cannot convert UTC without milliseconds tojava.util.Date
#32859- MockHttpServletRequest should not use a shared reader when no content is available #32848
- Spring AOP fails against registered
@Configurable
aspect #32839