Releases: spring-projects/spring-framework
Releases Β· spring-projects/spring-framework
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
v6.0.20
β New Features
- Accept ajc-compiled
@Aspect
classes for Spring AOP proxy usage #32817
π Bug Fixes
- Do not send Cookie header in reactive JdkClientHttpRequest if no cookies added #32831
- Incorrect AsyncRequestTimeoutException handling in ResponseEntityExceptionHandler #32808
- DeferredQueryInvocationHandler fails to unwrap QuerySqmImpl class outside of transaction #32769
MergedAnnotations
search does not find container for repeatable annotation #32752AnnotationConfigWebApplicationContext
should propagateApplicationStartup
toBeanFactory
#32748- Ignore non-String keys in
PropertiesPropertySource.getPropertyNames()
#32743 - "multiple subscribers not supported" when using WebClient exchange #32732
- Wrong proxy generation order during AOT for classes with
ScopedProxyMode.TARGET\_CLASS
and advisors #32701 - Deadlock/Stall in ConcurrentWebSocketSessionDecorator with Undertow 2.3.10 #32697
- ConfigurationClassEnhancer should consistently trigger FastClass creation at build-time #32683
- WebFlux temporary file not always deleted with parallel uploads. #32638
π Documentation
- Improve documentation advising against use of HandlerInterceptor for security #32809
- Links to Framework's Java API documentation from its Kotlin API documentation are broken #32801
- Correct documentation on streaming with MockMvcWebTestClient #32722
- Document that DataIntegrityViolationException can also be thrown on read-only queries #32686
- Update links to HttpOnly documentation at OWASP in
ResponseCookie
#32667
π¨ Dependency Upgrades
- Upgrade to Reactor 2022.0.19 #32787
v5.3.35
β New Features
- Accept ajc-compiled
@Aspect
classes for Spring AOP proxy usage #32818
π Bug Fixes
- DeferredQueryInvocationHandler fails to unwrap QuerySqmImpl class outside of transaction #32770
MergedAnnotations
search does not find container for repeatable annotation #32751AnnotationConfigWebApplicationContext
should propagateApplicationStartup
toBeanFactory
#32749- Ignore non-String keys in
PropertiesPropertySource.getPropertyNames()
#32744 - "multiple subscribers not supported" when using WebClient exchange #32728
- Deadlock/Stall in ConcurrentWebSocketSessionDecorator with Undertow 2.3.10 #32698
π Documentation
- Correct documentation on streaming with MockMvcWebTestClient #32723
- Update links to HttpOnly documentation at OWASP in
ResponseCookie
#32668
π¨ Dependency Upgrades
- Upgrade to Reactor 2020.0.44 #32788
v6.2.0-M1
β New Features
- Remove unnecessary
method.isAccessible()
invocation #32548 - Improve names of classes generated by the SpEL compiler #32497
- Refine null-safety with NullAway build-time checks #32475
- Consistent handling of undeclared checked exceptions in CGLIB proxies #32469
- Resolve property-dependent parameter names for exception messages #32462
- Consistent ErrorHandler support in TaskScheduler variants #32460
- Add CBOR support to
AllEncompassingFormHttpMessageConverter
#32428 - Reject
null
return value fromMethodReplacer
for primitive return type #32412 - Make SpEL's
OptimalPropertyAccessor
private #32410 - NPE when using
pathExtension
predicate for routes that have no file extensions #32404 - Use
Map#computeIfAbsent
in SpEL support classes #32385 - Use
ELContext
instead of deprecatedVariableResolver
API inJspPropertyAccessor
#32383 - Add web support for YAML via Jackson #32345
- Add DataSource configuration/exposure to LocalEntityManagerFactoryBean #32344
ServletResponseHttpHeaders
ignores content type inServletResponse
#32339- Use
ConcurrentHashMap.newKeySet
where feasible #32294 - Avoid resizing of fixed-size
HashSet
/LinkedHashSet
variants #32291 - Support backticks for quoted identifiers in
spring-r2dbc
#32285 - Avoid internal lifecycle synchronization for
SingleConnectionFactory
andSingleConnectionDataSource
#32284 - DefaultMessageListenerContainer should be able to scale down using default config #32260
- Revise DefaultMessageListenerContainer for first-class virtual thread support #32252
- Optimize Request Predicate attribute merging #32245
- Add ThreadLocalAccessor for LocaleContext and RequestAttributes #32243
- Avoid ASYNC dispatch if possible in DefaultAsyncServerResponse #32223
- Deprecate LobHandler and SqlXmlHandler abstractions (including SqlLobValue and related support classes) #32179
- Revisit default lifecycle phases and timeouts (e.g. for ThreadPoolTaskScheduler) #32152
- Harmonize ChannelRegistration to use Executor rather than TaskExecutor #32129
- Deprecate HttpHeaders.writableHttpHeaders #32116
- JsonPathAssertions methods that take a type used as a lambda should be ordered consistently #32062
- Deprecate local variable support in SpEL's internal
ExpressionState
#32004 - Support sending large STOMP messages as fragmented frames on
WebSocketStompClient
#31970 - NamedParameterJdbcTemplate does not support backticks for quoted identifiers #31944
- Use UTF-8 by default for JSON multipart content in
ContentRequestMatchers
#31924 - Add interception of RFC-7807 responses #31822
- Provide more control over charset parameter when writing form data #31781
- Enhance WebTestClient to support JSONPath decoding to higher level objects #31653
- Enhance JsonPathExpectationsHelper to allow use of JSONPath Configuration #31651
- Support "--" end of options in SimpleCommandLineArgsParser #31513
- Make use of bean definition overriding more visible #31288
- Initial support for Servlet 6.1 #31159
- Initial support for JPA 3.2 #31157
- Support to propagate a savepoint operation via TransactionSynchronization #30509
- Resolve type variable recursively in
GenericTypeResolver
#30079 - Propagate WebClient attributes into underlying HTTP client request where possible #29958
- Provide a safe way to override and mock beans in the TestContext framework #29917
- Invoke methods via public interface/superclass in compiled SpEL expressions #29857
- Introduce null-safe index operator in SpEL #29847
@Valid
annotation can't establish dependency relationship between beans #29730- Optimize constructor dependency injection performance for parameter name matches #28122
- Efficient webjars version resolution via
webjars-locator-lite
#27619 - Throw Exception when two primary beans are present in one factory #26612
- Allow creation of Beans that cannot be autowired by type unless qualified #26528
- Introduce
IndexAccessor
SPI to customize the SpELIndexer
#26478 - Introduce support for non-
@Primary
fallback beans #26241 - Optimize ConfigurationClassPostProcessor#enhanceConfigurationClasses method to shorten startup time #25738
- Inherited
@Transactional
methods should be able to use class-level TransactionManager qualifier from concrete class #24291 - TaskScheduler does not work with TaskDecorator #23755
- Synchronization during singleton creation may result in deadlock #23501
- Allow global default for
@Transactional
rollback behavior on checked exceptions #23473 - Add support for resolving multiple bounds in type variables #22902
@Transactional
annotation can't establish dependency relationship between beans #22526- Asynchronous EntityManagerFactory bootstrapping to complete on context refresh completion [SPR-17334] #21868
- Provide a mechanism to be notified that a bean has been created [SPR-16822] #21362
- Reduce the effect of different base package configuration on component scanning performance and make the effect more intuitive [SPR-16649] #21190
- Support AssertJ variant in MockMvc [SPR-16637] #21178
- Support configuration of connection URL via EmbeddedDatabaseBuilder [SPR-16619] #21160
- Revisit storage of null attributes in AbstractFallbackTransaction/CacheAttributeSource [SPR-15513] #20072
- Asynchronous initialization of beans during startup [SPR-14920] [#19487](https://github.com/spring-projects/spring-framework/issu...