Spring Framework Versions Save

Spring Framework

v6.2.0-M1

3 weeks ago

:star: 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 from MethodReplacer 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 deprecated VariableResolver API in JspPropertyAccessor #32383
  • Add web support for YAML via Jackson #32345
  • Add DataSource configuration/exposure to LocalEntityManagerFactoryBean #32344
  • ServletResponseHttpHeaders ignores content type in ServletResponse #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 and SingleConnectionDataSource #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 SpEL Indexer #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
  • Autowiring with @Autowired/@Inject get much slower than with @Resource as the number of classes increases [SPR-13086] #17677
  • Parallel bean initialization during startup [SPR-8767] #13410
  • Support escaping prefix and separator in property placeholders [SPR-4953] #9628

:lady_beetle: Bug Fixes

  • Transactional event listener invoked like standard event listener if @EnableTransactionManagement not active #32319
  • Stop overriding thread name prefix for externally configured Executor in ChannelRegistration #32132
  • WebClient and RestClient's defaultRequest(..) is not invoked early enough #32053
  • Alias resolution in SimpleAliasRegistry depends on hash codes of alias values #32024
  • Fix DefaultDataBuffer#getNativeBuffer() to set correct limit #32009
  • DefaultDataBuffer#setNativeBuffer violates contract of DataBuffer #30984
  • The method getNativeBuffer() in DefaultDataBuffer returns misconfigured ByteBuffer #30967
  • ApplicationContext caches are not cleared as expected when beans are lazy initialized #30954
  • A configuration class superclass that is skipped due to register bean phase conditions is ignored when another configuration class that extends it is processed #28676
  • Configuration class parsing registers bean in parent class if overridden @Bean method defines an alternative name #28286
  • Conditions to determine if @ComponentScan should be applied can be chosen from the wrong class #27077
  • Fallback with placeholder is evaluated even if the fallback is not required #26268
  • Name of scanned @Configuration class affects @Import to work or fail #24643
  • Reject conditional @ComponentScan declarations that rely on the REGISTER_BEAN phase #23206
  • Initialization blocked by multi-threaded event publishing [SPR-16357] #20904
  • Invalid instance injected for generic type in case of partial type variable [SPR-16179] #20727

:notebook_with_decorative_cover: Documentation

  • Polish Bean Overriding in Tests section of the reference guide #32411
  • Improve Javadoc for substituteNamedParameters() in NamedParameterUtils regarding empty lists #32380
  • StringUtils.uriDecode decodes strings with non-ASCII characters incorrectly #32360
  • Improve documentation for SpEL indexing support #32355
  • Document when the JPA infrastructure is ready for use #26153
  • Refactor configuration code samples to be more relevant for modern Spring applications #22171

:hammer: Dependency Upgrades

  • Upgrade to HtmlUnit 3.11.0 #30392
  • Upgrade to Micrometer 1.13.0-RC1 #32595
  • Upgrade to Reactor 2024.0.0-M1 #32591

:heart: Contributors

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

@FelixDes, @Flamme1004K, @LeMikaelF, @PhilKes, @Trympyrym, @ZeroCyan, @alidandach, @andrea-mauro, @azdanov, @deejay1, @injae-kim, @izeye, @jackmiking, @kilink, @nullzl, @quaff, @ttddyy, and @yuhangbin

v6.1.6

3 weeks ago

:star: New Features

  • Log column type for limited support message in JdbcUtils.getResultSetValue #32601
  • Consistent support for generic FactoryBean type matching when using getBeanProvider #32590
  • @RequestParam binding does not support params with an empty array "[]" suffix #32577
  • Maximum Request Size handling support for Undertow in StandardMultipartHttpServletRequest #32549
  • Introduce common support for is-null-safe checks in SpEL nodes #32516
  • Avoid additional unnecessary Annotation array cloning in TypeDescriptor #32476
  • Avoid cloning empty Annotation array in TypeDescriptor #32405

:lady_beetle: Bug Fixes

  • Refine scheme, userinfo, host and port parsing in UriComponentsBuilder #32616
  • "GET must not have a request body" exception with OkhttpClient and BufferingClientHttpRequestFactory #32612
  • JMSTemplate.sendAndReceive does not propagate tracer over the wire #32606
  • Calling Kotlin suspend functions in non-reactive application crashes due to unresolvable class #32599
  • MethodIntrospector.selectMethods() fails to detect bridge methods across ApplicationContexts #32586
  • Fix handling value class with private constructor on proxy #32536
  • ReactorNettyClientResponse should not dispose connection #32528
  • CompoundExpression omits null-safe syntax in AST string representation of null-safe selection/projection in SpEL #32515
  • Generic Kotlin controllers got broken in 6.1.5 #32510
  • WebFlux Blocking controller runs on non-blocking thread when request input data present #32502
  • Generic interface on FactoryBean class not autowired in case of targetType mismatch #32489
  • HeaderContentNegotiationStrategy.resolveMediaTypes() throws unexpected InvalidMimeTypeException #32483
  • JmsUtils.commitIfNecessary catches and ignores JMS IllegalStateException, losing message with ActiveMQ Artemis #32473
  • Missing bean class in native image with a Kotlin nested class #32472
  • Spring MVC re-creates form data from request params and re-encoding can change the content-length #32471
  • Unhandled JMS exceptions are not always recorded as observation errors #32458
  • Consistently apply TaskDecorator to ManagedExecutorService as well #32455

:notebook_with_decorative_cover: Documentation

  • SimpleAsyncTaskScheduler: Returned ScheduledFuture does not track provided task execution #32589
  • Remove link to unrelated method in javadoc of AnnotatedBeanDefinitionReader #32560
  • Fix typos and improve wording in reference documentation #32557
  • Document that active profiles are set at build time with AOT #32543
  • Fix broken link to vavr in the reference guide #32494
  • Document AOT limitations related to Kotlin identifiers with backticks #32487
  • Add Javadoc since to AbstractClientHttpRequestFactoryWrapper.getDelegate() #32474
  • Default strategy for ProblemDetail error codes wrongly document how "detail" is supported #32446

:hammer: Dependency Upgrades

  • Upgrade to Micrometer 1.12.5 #32596
  • Upgrade to Reactor 2023.0.5 #32592

:heart: Contributors

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

@Banuelorigni, @LinorDolev, @T45K, @izeye, @kilink, @quaff, and @qww1552

v6.0.19

3 weeks ago

:star: New Features

  • Log column type for limited support message in JdbcUtils.getResultSetValue #32602
  • Avoid additional unnecessary Annotation array cloning in TypeDescriptor #32478
  • Avoid cloning empty Annotation array in TypeDescriptor #32465

:lady_beetle: Bug Fixes

  • Refine scheme, userinfo, host and port parsing in UriComponentsBuilder #32617
  • MethodIntrospector.selectMethods() fails to detect bridge methods across ApplicationContexts #32587
  • Generic interface on FactoryBean class not autowired in case of targetType mismatch #32585
  • HeaderContentNegotiationStrategy.resolveMediaTypes() throws unexpected InvalidMimeTypeException #32484
  • JmsUtils.commitIfNecessary catches and ignores JMS IllegalStateException, losing message with ActiveMQ Artemis #32479
  • Consistently apply TaskDecorator to ManagedExecutorService as well #32456

:notebook_with_decorative_cover: Documentation

  • Fix broken link to vavr in the reference guide #32495

:hammer: Dependency Upgrades

  • Upgrade to Reactor 2022.0.18 #32593

v5.3.34

3 weeks ago

:star: New Features

  • Log column type for limited support message in JdbcUtils.getResultSetValue #32603
  • Avoid additional unnecessary Annotation array cloning in TypeDescriptor #32477
  • Avoid cloning empty Annotation array in TypeDescriptor #32466

:lady_beetle: Bug Fixes

  • Refine scheme, userinfo, host and port parsing in UriComponentsBuilder #32618
  • MethodIntrospector.selectMethods() fails to detect bridge methods across ApplicationContexts #32588
  • JmsUtils.commitIfNecessary catches and ignores JMS IllegalStateException, losing message with ActiveMQ Artemis #32480
  • Consistently apply TaskDecorator to ManagedExecutorService as well #32457

:hammer: Dependency Upgrades

  • Upgrade to Reactor 2020.0.43 #32594

v6.1.5

1 month ago

:star: New Features

  • Extract reusable method for URI validations #32440
  • Allow UriTemplate to be built with an empty template #32432
  • Optimize Coroutine invocations #32390
  • Improve exception message when Scheduled tasks that are using Virtual Threads fail on shutdown #32381
  • Add query parameters to MockMvc Kotlin DSL #32371
  • Optimize content type parsing in ServletServerHttpResponse #32361
  • Refine handling of disconnected client error in ExceptionHandlerExceptionResolver #32359
  • Refine \*HttpMessageConverter#getContentLength return value null safety #32325
  • Optimize HttpHeaders.getAcceptLanguageAsLocales #32318
  • SimpleAsyncTaskScheduler: consistently apply default error handling #32298
  • Use Spliterator of underlying collection in MutablePropertyValues / MutablePropertySources #32281

:lady_beetle: Bug Fixes

  • SpEL fails to compile expression indexing into boolean array #32400
  • WebClient Observations are missing error #32389
  • WebClient request sent twice instantly when using @Cacheable #32370
  • AopUtils.getMostSpecificMethod does not return original method for proxy-derived method anymore #32365
  • Fix ServletResponseHttpHeaders#get null handling #32362
  • Compiled SpEL expression fails if #root or #this is a non-public type #32356
  • Suspend handler methods fail on nullable value class parameters #32353
  • Better protect against concurrent error handling for async requests #32340
  • Performance degradation due to Kotlin value class checks #32334
  • With value referenced from property file in XML configuration, setter selection can be random in case of overloaded setter methods (e.g. on SimpleClientHttpRequestFactory) #32329
  • constructor-impl of Kotlin value class is not called #32324
  • ContentCachingResponseWrapper no longer honors Content-Type and Content-Length #32317
  • Hibernate native image support broken by HHH-17643 #32311
  • Revisit DatabaseMetadata#getProcedures to only apply fallback if original search yield more than one result #32295
  • Remove Observation.Context from WebClient request #32198

:notebook_with_decorative_cover: Documentation

  • Refine "Redirecting to a resource" section code sample #32423
  • Javadoc of ReactorNettyClientRequestFactory#setExchangeTimeout methods have wrong default value #32419
  • Fix order of 2 sections in the Validation chapter of the reference manual #32408
  • Fix Javadoc #32403
  • Document that SpEL expressions using array construction cannot be compiled #32401
  • Improve documentation for @Sql execution phases regarding lifecycle #32343
  • Omit parameter names in REST Clients section of reference docs #32335
  • Different transaction name when using TransactionAspectSupport.currentTransactionStatus().transactionName #32310
  • Provide guidelines for using Kotlin properties with proxies (@RequestScope and similar use cases) #32287
  • Correct documentation for userDestinationPrefix in MessageBrokerRegistry #32272

:hammer: Dependency Upgrades

  • Upgrade to Micrometer 1.12.4 #32431
  • Upgrade to Reactor 2023.0.4 #32420

:heart: Contributors

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

@Xednar, @ZeroCyan, @bsgrd, @ddaaac, @kilink, @qeeqez, and @quaff

v6.0.18

1 month ago

:star: New Features

  • Extract reusable method for URI validations #32441
  • Allow UriTemplate to be built with an empty template #32437
  • Refine \*HttpMessageConverter#getContentLength return value null safety #32333

:lady_beetle: Bug Fixes

  • WebClient Observations are missing error #32399
  • AopUtils.getMostSpecificMethod does not return original method for proxy-derived method anymore #32368
  • Better protect against concurrent error handling for async requests #32341
  • ContentCachingResponseWrapper no longer honors Content-Type and Content-Length #32321
  • Hibernate native image support broken by HHH-17643 #32312

:notebook_with_decorative_cover: Documentation

  • Fix order of 2 sections in the Validation chapter of the reference manual #32409

:hammer: Dependency Upgrades

  • Upgrade to Reactor 2022.0.17 #32421

v5.3.33

1 month ago

:star: New Features

  • Extract reusable method for URI validations #32442
  • Allow UriTemplate to be built with an empty template #32438
  • Refine *HttpMessageConverter#getContentLength return value null safety #32332

:lady_beetle: Bug Fixes

  • AopUtils.getMostSpecificMethod does not return original method for proxy-derived method anymore #32369
  • Better protect against concurrent error handling for async requests #32342
  • Restore Jetty 10 compatibility in JettyClientHttpResponse #32337
  • ContentCachingResponseWrapper no longer honors Content-Type and Content-Length #32322

:notebook_with_decorative_cover: Documentation

  • Build KDoc against 5.3.x Spring Framework Javadoc #32414

:hammer: Dependency Upgrades

  • Upgrade to Reactor 2020.0.42 #32422

v5.3.32

2 months ago

:star: New Features

  • Add CORS support for Private Network Access #31974
  • Avoid early getMostSpecificMethod resolution in CommonAnnotationBeanPostProcessor #31969

:lady_beetle: Bug Fixes

  • Consistent parsing of user information in UriComponentsBuilder #32247
  • QualifierAnnotationAutowireCandidateResolver.checkQualifier does identity checks when comparing arrays used as qualifier fields #32108
  • Guard against multiple body subscriptions in Jetty and JDK reactive responses #32101
  • Static resources caching issues with ShallowEtagHeaderFilter and Jetty caching directives #32051
  • ChannelSendOperator.WriteBarrier race condition in request(long) method leads to response being dropped #32021
  • Spring AOP does not propagate arguments for dynamic prototype-scoped advice #31964
  • MergedAnnotation swallows IllegalAccessException for attribute method #31961
  • CronTrigger hard-codes default ZoneId instead of participating in scheduler-wide Clock setup #31950
  • MergedAnnotations finds duplicate annotations on method in multi-level interface hierarchy #31825
  • PathEditor cannot handle absolute Windows paths with forward slashes #31728
  • Include Hibernate's Query.scroll() in SharedEntityManagerCreator's queryTerminatingMethods set #31684
  • TypeDescriptor does not check generics in equals method (for ConversionService caching) #31674
  • Slow SpEL performance due to method sorting in ReflectiveMethodResolver #31665
  • Jackson encoder releases resources in wrong order #31657
  • WebSocketMessageBrokerStats has null stats for stompSubProtocolHandler since 5.3.2 #31642

:notebook_with_decorative_cover: Documentation

  • Document cron-vs-quartz parsing convention for dayOfWeek part in CronExpression #32131

:hammer: Dependency Upgrades

  • Upgrade to Reactor 2020.0.41 #32276

v6.0.17

2 months ago

:star: New Features

  • RouterFunctionMapping does not implement MatchableHandlerMapping #32222
  • Optimize Map methods in ServletAttributesMap #32197

:lady_beetle: Bug Fixes

  • @JsonDeserialize(builder = ...) does not work in GraalVM native image #32257
  • Consistent parsing of user information in UriComponentsBuilder #32246
  • "IllegalStateException: Cannot call sendError() after the response has been committed" when IOException is thrown during resolving method argument values on Tomcat >= 10.1.16 #32207
  • Cannot process AOT when spring-orm is on the classpath without JPA #32160
  • QualifierAnnotationAutowireCandidateResolver.checkQualifier does identity checks when comparing arrays used as qualifier fields #32107
  • Guard against multiple body subscriptions in Jetty and JDK reactive responses #32102
  • Exceptions thrown by custom error handlers are not recorded in RestTemplate observations #32063
  • Static resources caching issues with ShallowEtagHeaderFilter and Jetty caching directives #32050
  • ChannelSendOperator.WriteBarrier race condition in request(long) method leads to response being dropped #32020
  • Destroy method not found in Native image for ExecutorService Bean type #32017

:notebook_with_decorative_cover: Documentation

  • Update basics.adoc #32151
  • Document cron-vs-quartz parsing convention for dayOfWeek part in CronExpression #32130

:hammer: Dependency Upgrades

  • Upgrade to Reactor 2022.0.16 #32275

v6.1.4

2 months ago

: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