Spring Framework - v6.1.4


:star: New Features

  • Add missing RequestPredicate variants in coRouter #32256
  • Adapt ConcurrencyThrottleSupport to use ReentrantLock for better virtual thread support #32251
  • Create optimized versions of request predicates #32244
  • Include function name in SpelMessage.INCORRECT\_NUMBER\_OF\_ARGUMENTS\_TO\_FUNCTION #32239
  • Add Coroutines support to NonReactiveHandlerMethodPredicate #32227
  • RouterFunctionMapping does not implement MatchableHandlerMapping #32221
  • Initialize (another) Map with correct size in RequestPredicates #32215
  • Make SmartLifecycle phase value configurable in STOMP message handling components #32205
  • Initialize Map with correct size in RequestPredicates #32201
  • Let BeanPropertyRowMapper subclasses customize mapped names #32199
  • Improve client and server handling of STOMP heartbeat failures #32195
  • Optimize Map methods in ServletAttributesMap #32189
  • Support binary streams with JdbcClient #32161
  • Annotate core functional SPIs in SpEL with @FunctionalInterface #32135
  • Cannot use SimpleJdbcInsert with catalog name #32124
  • Refactor ReloadableResourceBundleMessageSource #32118
  • Reuse MapPropertySource for DynamicValuesPropertySource implementation (as a template for custom variants) #32110
  • Improve Spring AOP performance for methods without specific advice #32104
  • Make it possible to configure any TaskExecutor through ChannelRegistration #32081
  • Add support for JSON streams to Kotlin Serialization #32074
  • Avoid reflecting to obtain validationGroups every time the call is made #32068
  • Reject @RequestMapping and @HttpExchange declarations on the same element #32065
  • Missing toString for ExponentialBackOff #32061
  • Reject multiple @HttpExchange declarations on the same element #32049
  • ClientAbortException from StreamingResponseBody can cause infinite loop of dispatches #32042
  • Log warning if multiple @PostMapping, @GetMapping, etc. annotations are declared #31962
  • Using types in @SessionAttributes is sometimes not reflected in the model #30463
  • Improve read publisher cancel handling to avoid connections in CLOSE_WAIT state with WebSocket on Tomcat #30393
  • Provide more control over JPA entities scanning #27892
  • Provide and document a way to handle single-page application redirects #27257
  • MockMvcClientHttpRequestFactory swallows ServletResponse.errorMessage #26720

:lady_beetle: Bug Fixes

  • Cannot send Server-Sent Events without data using WebMvc.fn SseBuilder #32270
  • Fix pathExtension null-safety in Kotlin DSLs #32254
  • SimpleEvaluationContext.Builder is not final and has a public constructor #32253
  • @JsonDeserialize(builder = ...) does not work in GraalVM native image #32238
  • RestClientAdapter claims it supports request attributes when it does not #32232
  • ThreadPoolTaskExecutor rejecting tasks as soon as the context has been closed can lead to exceptions during web app shutdown #32226
  • Consistent parsing of user information in UriComponentsBuilder #32211
  • "IllegalStateException: Cannot call sendError() after the response has been committed" when IOException is thrown during resolving method argument values on Tomcat >= 10.1.16 #32206
  • No longer able to override the toString() in HandlerMethod from 6.1.3 #32184
  • 6.1.3 regression: aspect not called with multiple inheritance #32181
  • Unable to use baseUrl on builders created from RestTemplate #32180
  • MessageDeliveryException on shutdown with open WebSocket connections #32171
  • With XML configuration, setter selection can be random in case of overloaded setter methods (e.g. on SimpleClientHttpRequestFactory in 6.1.3 from convertForProperty method) #32159
  • Cannot process AOT when spring-orm is on the classpath without JPA #32155
  • SpEL's Indexer.setArrayElement() incorrectly requests conversion to wrapper instead of primitive #32147
  • SpEL increment and decrement operators do not generate prefix AST representation #32144
  • Validation of PartEventHttpMessageReader#maxParts is off by one #32122
  • QualifierAnnotationAutowireCandidateResolver.checkQualifier does identity checks when comparing arrays used as qualifier fields #32106
  • Guard against multiple body subscriptions in Jetty and JDK reactive responses #32100
  • Parameter based cache keys on repository methods can't resolve after 6.1.2->6.1.3 #32087
  • Exceptions thrown by custom error handlers are not recorded in RestTemplate observations #32060
  • Static resources caching issues with ShallowEtagHeaderFilter and Jetty caching directives #32039
  • RestClient calls interceptors from RestTemplate twice #32038
  • DefaultRestClientBuilder.defaultRequest(...) doesn't do anything #32028
  • Alias resolution error message in SimpleAliasRegistry is misleading #32025
  • Destroy method not found in Native image for ExecutorService Bean type #32006
  • RequestPredicate fails with WebFlux 6.1.2 #31955
  • ChannelSendOperator.WriteBarrier race condition in request(long) method leads to response being dropped #31865

:notebook_with_decorative_cover: Documentation

  • Fix Kotlin syntax errors in RestClient builder example in rest-clients.adoc #32265
  • Use double dot in "META-INF/aop.xml" documentation #32264
  • Document that functions are variables in SpEL EvaluationContexts #32258
  • Add section on AOT best practices about registering beans programmatically #32241
  • Add section on AOT best practices about registering singletons #32240
  • Fixes syntax error in JdbcClient examples #32236
  • Document @RequestAttribute in HTTP clients #32231
  • Fix typo in beanvalidation.adoc #32218
  • Variables definition fixed #32216
  • Document safe navigation support for collection selection/projection in SpEL #32208
  • Document usage of SpEL's power operator in the reference manual #32187
  • Document support for overloading operators in SpEL #32182
  • Update basics.adoc #32145
  • Document between operator in SpEL #32140
  • Update documentation for supported letters in variable names in SpEL #32138
  • Document repeat and characer subtraction String operators in SpEL #32137
  • Document increment and decrement operators in SpEL #32136
  • Document cron-vs-quartz parsing convention for dayOfWeek part in CronExpression #32128
  • Fix typo #32111
  • Graceful shutdown does not cancel @Scheduled tasks #32109
  • Fixes atlas-extension order #32083
  • Spring MVC and WebFlux docs need to say method validation applies if any method parameter has constraint annotations #32082
  • Add @see PathPattern to function router methods with a pattern parameter #32045
  • Rename class-data-sharing.html to cds.html #32044
  • Enable table striping by default in the reference manual #32022
  • Document that Conditions can be ordered #32019
  • Document how @JvmName could mitigate Kotlin internal modifier impact #32010
  • Update docs on server side use of @HttpExchange to make it more clear when it is a good fit #32008
  • Document safe navigation semantics within compound expressions in SpEL #21827
  • Document limitation of SpEL regarding minimum values for numeric literals #20779

:hammer: Dependency Upgrades

  • Upgrade to Micrometer 1.12.3 and Context Propagation 1.1.1 #32277
  • Upgrade to Reactor 2023.0.3 #32274

:heart: Contributors

Thank you to all the contributors who worked on this release:

@1515biubiubiu, @Akaame, @OlgaMaciaszek, @andreibastun, @cirusthenter, @erichaagdev, @jee14, @jmondo, @kilink, @kzander91, @mnhock, @quaff, @rotilho, @rwinch, @senocak, @spencergibb, and @wfouche


Details

date
Feb. 15, 2024, 11:05 a.m.
name
v6.1.4
type
Patch
👇
Register or login to:
  • 🔍View and search all Spring Framework releases.
  • 🛠️Create and share lists to track your tools.
  • 🚨Setup notifications for major, security, feature or patch updates.
  • 🚀Much more coming soon!
Continue with GitHub
Continue with Google
or