Releases: spring-projects/spring-framework
Releases Β· spring-projects/spring-framework
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
v5.3.36
v6.2.0-M2
β New Features
- Make it easier to register reflection hints on interface hierarchies #32824
- Support varargs invocations in SpEL for varargs array subtype in compiled expressions #32804
- Align StandaloneMockMvcBuilder with trailing slash defaults #32796
- Use lambda expressions consistently #32765
- Bean overriding in tests should use by-type semantic if no name is specified #32761
- Add
ServerRequest.pathVariableOrNull
Kotlin extension #32738 - Throw an exception for suspending factory methods #32719
- Introduce
ReflectiveIndexAccessor
convenience class in SpEL #32714 - Add
BodyInserters.fromValue(T, ParameterizedTypeReference<T>)
and related APIs #32713 - Rename AssertableMockMvc to MvcTester and review assertions structure #32712
- Introduce
generateCodeForArgument()
inCodeFlow
#32708 - Make
SpelNode
compilation aware #32707 - Add a
requiredBody()
extension toRestClient.ResponseSpec
#32703 - Add
IndexAccessor
support to SpEL'sSimpleEvaluationContext
#32702 - Support compilation of array and list indexing with
Integer
in SpEL #32694 - Avoid unnecessary compilation attempts in SpEL's
Indexer
#32677 - Adds support for qualifying columns with table. #32653
- Omit empty resource description in
DeprecatedBeanWarner
's log message #32647 - Introduce
getName()
in SpEL'sBeanReference
#32640 - Validate that
private
JUnit Jupiter lifecycle methods are not annotated with@Autowired
#32627 - Ensure removal of
Content-Type
header if bodyPublisher
is empty #32622 - Introduce
CompilableIndexAccessor
SPI in SpEL #32613 - AbstractJackson2Decoder doesn't support decoding NDJSON arrays into Flux #32579
- Handle DataBufferLimitException as HTTP 413 responses #32558
- Introduce URL parser based on algorithm provided in Living URL standard #32513
- JettyClientHttpRequestFactory should set request/response timeout #32330
- Remove Hibernate substitutions and deprecated properties usage #32314
- Register
DynamicPropertyRegistry
as a singleton bean in a test'sApplicationContext
#32271 - Allow for AbstractUrlHandlerMapping to add/remove handlers at runtime #32064
- Make it possible for Spring Security to align with Spring MVC without HandlerMappingIntrospector #31823
- Create Filter to handle URLs with trailing slashes #31366
- Add testing support for WebMvc.fn #30477
- Use URL and HTTP method in DefaultResponseErrorHandler #28958
- CacheAspectSupport initialization failure should throw dedicated exceptions, rather than IllegalStateException #22442
- Clear AspectJExpressionPointcut cache when it is no longer used #12334
π Bug Fixes
MediaTypeAssert
risk false negative withisNotEqual
assertion #32756IndexAccessor
cannot support customCollection
target type #32736- Custom
IndexAccessor
cannot supportString
index type #32706 - HttpHeaders should reject negative ContentLength values #32660
π Documentation
- Improve wording in Spring Framework Overview documentation #32829
- Clarify supported targets for annotations in the TestContext framework #32772
- Modernize the lazy-initialized beans refdoc section #32767
- Document SpEL
IndexAccessor
support in the reference manual #32735 - Use lowercase package name in code snippets #32734
- Fix class name typo in reference documentation #32664
- Introduce configuration code includes and tabs in the Integration section #32600
- Document bean override support in the TestContext framework in the reference manual #32490
π¨ Dependency Upgrades
- Upgrade to HtmlUnit 4.1.0 #32740
- Upgrade to Micrometer 1.13.0 #32811
- Upgrade to Reactor 2024.0.0-M2 #32785
- Upgrade to webjars-locator-lite 1.0.0 #32564
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@Donghh0221, @GeorgePap-719, @LeMikaelF, @MichaelKunze, @NadChel, @SharadK10, @attermann, @awmeinema, @dukbong, @earlgrey02, @evan-mc, @jerzykrlk, @laterlaugh, @mysend12, @onjik, and @quaff
v6.1.7
β New Features
- ResponseEntity is not reliably closed with InputStreamResource #32802
- Accept ajc-compiled
@Aspect
classes for Spring AOP proxy usage #32793 - Failure to process a bean definition ahead-of-time with an instance supplier should provide more contextual information #32775
- Provide methods to unambiguously send form data with MockMvc #32757
- Introduce NoOp implementation for ResponseErrorHandler #32750
- Support varargs invocations in SpEL for varargs array subtype #32704
- StreamUtils.copyRange overreads source stream in some cases #32695
- Modify error message when timeout is less than TIMEOUT_DEFAULT #32635
- Jetty HttpConnections not closed with SSE on Jetty 12.0.7+ when clients close the connection #32629
- Prevent duplicate subscription ID's in destinationCache of DefaultSubscriptionRegistry #32625
- When retrieval of a LoadTimeWeaverAware bean fails the resulting exception message may not indicate why it was being created #32470
π Bug Fixes
- Do not send Cookie header in reactive JdkClientHttpRequest if no cookies added #32799
- Inconsistent use of cleaned URLs in PathMatchingResourcePatternResolver #32828
- DeferredQueryInvocationHandler fails to unwrap QuerySqmImpl class outside of transaction #32766
- BindingReflectionHintsRegistrar#registerReflectionHints can be invoked with a null type #32753
AnnotationConfigWebApplicationContext
should propagateApplicationStartup
toBeanFactory
#32747- Ignore non-String keys in
PropertiesPropertySource.getPropertyNames()
#32742 MergedAnnotations
search does not find container for repeatable annotation #32731- "multiple subscribers not supported" when using WebClient exchange #32727
- ConfigurationClassEnhancer should consistently trigger FastClass creation at build-time #32682
- HttpComponentsClientHttpRequestFactory does not set Content-Length: 0 #32678
- Wrong proxy generation order during AOT for classes with
ScopedProxyMode.TARGET\_CLASS
and advisors #32669 - Unhandled JMS listener exceptions are not propagated #32666
- beanFactory#getBean with arguments ignore them if an Instance supplier is defined #32657
- Incorrect AsyncRequestTimeoutException handling in ResponseEntityExceptionHandler #32644
- Include actual cause's message in various parsing exception messages #32636
- Configuration class with Bean factory method on an interface generates wrong target with AOT #32609
- RestClient observations are stopped before ResponseSpec calls #32575
- MvcUriComponentsBuilder.fromMethodName does not pick the annotated method transparently #32553
- Deadlock/Stall in ConcurrentWebSocketSessionDecorator with Undertow 2.3.10 #32445
- RSocket setup payload can cause Netty ByteBuf leak #32424
- WebFlux temporary file not always deleted with parallel uploads. #31217
π Documentation
- Replace RFC 7807 by RFC 9457 in documentation #32806
- Links to Framework and Servlet Javadoc from Framework's Kotlin API documentation are broken #32797
- Fix incorrect class reference syntax in Kotlin code sample #32733
- Improve documentation advising against use of HandlerInterceptor for security #32729
- Inconsistent behaviour on transactional async method #32709
- Document that getBean with arguments is not recommended with AOT #32690
- Provide an example of custom request URL with RestClient in the reference guide #32685
- Correct documentation on streaming with MockMvcWebTestClient #32687
- Document limitations of CGLIB proxy class generation in JPMS module setups #32671
- Update links to HttpOnly documentation at OWASP in
ResponseCookie
#32663 - Document that RestTemplate may not return a body for certain exceptions #32641
- Document that DataIntegrityViolationException can also be thrown on read-only queries #32631
- Update documentation to explain streaming vs collecting and error handling with
Flux<T>
return values #32630 - Revise "The IoC Container" section to be more relevant for modern Spring applications #32429
- XML bean definition with
factory-method
does not always determine correct target type #32091 - Document
@Order
behavior on types, bean methods, and config classes #30177 - Clarify recommendation on self-injection for legitimate use cases (e.g.
@Transactional
re-entrant calls) #28299
π¨ Dependency Upgrades
β€οΈ Contributors
Thank you to all the contributors who worked on this release:
@LeMikaelF, @Seungpang, @izeye, @m4tt30c91, @remeio, and @yhao3