⭐ New Features
- Consistent simple value type check (including UUID treatment for data binding) #30664
- Release shared JMS Connection when message listener container is stopped #30612
- Property-driven onRefresh checkpoint during application context bootstrap #30606
- Support letters other than A-Z in identifiers in SpEL expressions #30580
- Remove System.out calls in PreComputeFieldFeature #30571
- Have the ErrorResponse.Builder take in a custom ProblemDetail instance #30568
- Allow setting the ProblemDetail.type via a MessageSource #30566
- ClientHttpRequestFactory based on Jetty HttpClient #30564
- Remove buffering in ClientHttpRequestFactory implementations #30557
- Support JAXBElement in Jaxb2XmlEncoder #30552
- Disable SpEL selector support in WebSocket messaging by default #30550
- Enforce JPA bootstrap failure for incomplete Hibernate Validator setup #30549
- Support parsing
long
dates inInstantFormatter
#30546 - Port BeanPropertyRowMapper and DataClassRowMapper for r2dbc #30530
- Add non-null precondition checks in
DefaultEntityResponseBuilder
#30433 - Deprecate spring-context-indexer #30431
- Update
RuntimeHintsAgentPlugin
to use the native image code path #30422 - HTTP interface client should not have blockingTimeout set and leave it to the underlying client by default #30403
- Improve
toString()
forProfiles.of()
implementation #30374 - Add ReloadableResourceBundleMessageSource Resource selection hook #30369
- Optimize DefaultLifecycleProcessor::stopBeans #30361
- Deprecate
AutowireCapableBeanFactory.createBean(Class, int, boolean)
for consistent usage ofcreateBean(Class)
#30345 - Support
setCharacterEncoding(null)
inMockHttpServletResponse
#30341 - Add support for converting a String to an Instant #30312
- Refine
RouterFunctionMapping
ordering consistency #30278 - CRaC Resource adapter for bean lifecycle in application context #30242
- Configuration options for virtual threads #30241
- Support for SequencedCollection/Set/Map #30239
- MethodArgumentNotValidException::errorsToStringList should include only the resolved message when MessageSource is used #30198
- Support
@XmlSeeAlso
in Jaxb2XmlDecoder #30167 - Add SpEL support for registered MethodHandles #30045
- Add test support to record async events, with JUnit Jupiter caveat #30020
- Returning a
CompletableFuture.failure()
from an async, transactional method should mark the transaction as roll back #30018 - Support
@Scheduled
on Reactive methods and Kotlin suspending functions #29924 - Compatibility with JVM checkpoint restore (OpenJDK's Project CRaC) #29921
Validator
factory methods withBiConsumer
#29890- Spring MVC and WebFlux method validation support that also adapts
ConstraintViolation
s #29825 - Remove LocalVariableTableParameterNameDiscoverer #29559
- Avoid use of
java.net.URL
constructors #29481 - Creating relative resource for URL resource should create relative Resource even if relative path has URL in it #28522
- ModelAttributeMethodArgumentResolver does not support custom field binding for immutable objects #28284
- ConcurrentTaskScheduler and ConcurrentTaskExecutor can create an executor with no way to shut it down #27914
- R2DBC ConnectionFactory bean
.close()
method should be called/subscribed when available #26991 - org.springframework.web.servlet.mvc.method.annotation.ReactiveTypeHandler does not handle vendor-specific application/x-ndjson media types #26817
- Improve the experience of handling validation errors in controller methods #26219
- Compatibility with virtual threads (OpenJDK's Project Loom) #23443
- Support Spring Boot style flexible Duration value parsing [SPR-17481] #22013
- Avoid repeated attempts to load a failing
ApplicationContext
in the TestContext framework [SPR-9548] #14182
🐞 Bug Fixes
- Retain profiles used when running AOT #30421
- Automatic context propagation stops working after an error occurs #30013
📔 Documentation
- Introduce JVM checkpoint/restore support documentation #30647
- Fix link in Javadoc of
PassThroughFilterChain
#30365 - Clarify behavior of the Elvis SpEL operator in documentation #30352
- Fix link to releases feed #30340
🔨 Dependency Upgrades
- Upgrade to Jackson 2.15 #30665
- Upgrade to Kotlin 1.8 #29754
- Upgrade to Kotlin Coroutines 1.7 #30514
- Upgrade to Kotlin Serialization 1.5 #30515
- Upgrade to SnakeYAML 2.0 #30048
❤️ Contributors
Thank you to all the contributors who worked on this release:
@OlgaMaciaszek, @RemusRD, @aooohan, @asomov, @izeye, @jstansel, @kzander91, @luohongtu, @making, @rwinch, and @srivatsa-cfp