v6.0.8
⭐ New Features
- Disable variable assignment in SimpleEvaluationContext #30326
- Limit SpEL expression length #30325
- Limit string concatenation in SpEL expressions #30324
- Introduce
StringUtils.truncate()
#30290 - Introduce
ObjectUtils.nullSafeConciseToString()
#30286 - Introduce assertions against
Cookie
attributes inCookieResultMatchers
forMockMvc
#30285 - Polishing #30267
- Support
SameSite
cookie attribute inMockMvcHttpConnector
#30264 - Update
MockCookie
to make use of Servlet 6.0 APIs and semantics for "attributes" #30263 - Refine
initRequestBuilder
inDefaultWebClient
#30254 - HttpServerErrorException contains not-serializable field of type DefaultResponseErrorHandler #30224
- Add class hints for Jackson annotations on fields and methods #30208
- Add
HttpMethod
reflection hint toObjectToObjectConverterRuntimeHints
#30201 - Improve performance of canRead() in HttpMessageReader's #30192
- Optimize array creation in SpEL
ConstructorReference
#30189 - ConstructorResolver error hints about mixing indexed and named args #30169
- Replace
Collections.unmodifiableList(new ArrayList(..))
withList.copyOf()
#30166 - Add assert null validations for DefaultServerResponseBuilder #30157
- Use
InputStream.readAllBytes()
inFileCopyUtils.copyToByteArray()
#30155 - Cache ServerHttpRequest::getMethod in AbstractServerHttpRequest #30139
- Use String.equals() in LiteralPathElement #30138
- Optimize some iterations in BodyExtractor and BodyInserter #30136
- Add a couple missing java.time types to StatementCreatorUtils #30123
- WebClient observations should not record CANCEL signals as aborted if response was received #30070
- Destroy method not found in native image if concrete bean type is not exposed #29545
- Contribute init/destroy lifecycle introspection hints for registered beans #29246
🐞 Bug Fixes
- NPE thrown for nonexistent
default-destroy-method
in XML config #30301 - Fix comparison of
title
inequals()
andhashCode()
ofProblemDetail
#30294 - SSE breaks with indenting serializer in WebMvc.fn #30277
@HttpExchange
interface does not resolve return type correctly while using with suspending methods #30266- Increase max regex length in SpEL expressions #30265
- Missing response information from client observation context when filter functions fail #30247
- NullPointerException on timeout in HttpComponentsClientHttpConnector when using Apache HttpComponents #30245
- Wrong MockRestRequestMatchers.header() method in spring-test being invoked (JDK issue?) #30220
- Refine generic type management in
AbstractMessageWriterResultHandler
#30214 - MvcUriComponentsBuilder.fromMethodCall breaks for controller with CharSequence return type #30210
- Encode IPV6 Zone IDs (%) in ReactorServerHttpRequest #30188
- Handle all exceptions for stored proc output param retrieval in
SharedEntityManagerCreator
#30161 - Fix IllegalArgumentException that prevents STOMP DISCONNECT from reaching the client #30120
- TypeNotPresentException: org/springframework/cglib/proxy/NoOp not present on Java 17 #30115
📔 Documentation
- Add since tags to sameSite() and attribute() in CookieResultMatchersDsl #30308
- Fix incorrect jakarta.inject artifact version #30270
- Fix
@PathVariable
reference documentation code snippets #30243 - Use diamond operator in examples in reference manual #30204
- Fix example in Javadoc for
@EnableWebSocket
#30183 - Fix anchor in link to "Web on Reactive Stack" chapter #30158
- Documentation for Vavr's Try method to trigger transaction rollbacks #30108
- Document that WebClient defaultStatusHandler do not apply to exchange* methods #30059
🔨 Dependency Upgrades
❤️ Contributors
Thank you to all the contributors who worked on this release:
@1993heqiang, @TAKETODAY, @ZouHongxue, @alexjansons, @divcon, @edyda99, @filipblondeel, @ghostg00, @giuseppemilicia, @izeye, @justin-tay, @krzyk, @kyuarl21, @quaff, @shitian9, @simonbasle, @srivatsa-cfp, @ssang1105, @stsypanov, @wizard4wu, and @yuzawa-san