v6.2.0-M1
- 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 natively in Spring #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
- 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
- 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
- Polish Bean Overriding in Tests section of the reference guide #32411
- Improve Javadoc for
substituteNamedParameters()
inNamedParameterUtils
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
- Upgrade to HtmlUnit 3.11.0 #30392
- Upgrade to Micrometer 1.13.0-RC1 #32595
- Upgrade to Reactor 2024.0.0-M1 #32591
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
- Log column type for limited support message in
JdbcUtils.getResultSetValue
#32601 - Consistent support for generic
FactoryBean
type matching when usinggetBeanProvider
#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 inTypeDescriptor
#32476 - Avoid cloning empty
Annotation
array inTypeDescriptor
#32405
- 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 oftargetType
mismatch #32489 HeaderContentNegotiationStrategy.resolveMediaTypes()
throws unexpectedInvalidMimeTypeException
#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
- 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
Thank you to all the contributors who worked on this release:
@Banuelorigni, @LinorDolev, @T45K, @izeye, @kilink, @quaff, and @qww1552
v6.0.19
- Log column type for limited support message in
JdbcUtils.getResultSetValue
#32602 - Avoid additional unnecessary
Annotation
array cloning inTypeDescriptor
#32478 - Avoid cloning empty
Annotation
array inTypeDescriptor
#32465
- 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 oftargetType
mismatch #32585 HeaderContentNegotiationStrategy.resolveMediaTypes()
throws unexpectedInvalidMimeTypeException
#32484- JmsUtils.commitIfNecessary catches and ignores JMS IllegalStateException, losing message with ActiveMQ Artemis #32479
- Consistently apply TaskDecorator to ManagedExecutorService as well #32456
- Fix broken link to vavr in the reference guide #32495
- Upgrade to Reactor 2022.0.18 #32593
v5.3.34
- Log column type for limited support message in
JdbcUtils.getResultSetValue
#32603 - Avoid additional unnecessary
Annotation
array cloning inTypeDescriptor
#32477 - Avoid cloning empty
Annotation
array inTypeDescriptor
#32466
- 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
- Upgrade to Reactor 2020.0.43 #32594
v6.1.5
- Extract reusable method for URI validations #32440
- Allow UriTemplate to be built with an empty template #32432
- Polishing #32397
- 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
- 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 Kotlinvalue 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
- 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
inMessageBrokerRegistry
#32272
Thank you to all the contributors who worked on this release:
@Xednar, @ZeroCyan, @bsgrd, @ddaaac, @kilink, @qeeqez, and @quaff
v6.0.18
- 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
- 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
- Fix order of 2 sections in the Validation chapter of the reference manual #32409
- Upgrade to Reactor 2022.0.17 #32421
v5.3.33
- 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
- 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
- Build KDoc against
5.3.x
Spring Framework Javadoc #32414
- Upgrade to Reactor 2020.0.42 #32422
v5.3.32
⭐ New Features
- Add CORS support for Private Network Access #31974
- Avoid early getMostSpecificMethod resolution in CommonAnnotationBeanPostProcessor #31969
🐞 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()
inSharedEntityManagerCreator
'squeryTerminatingMethods
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
📔 Documentation
- Document cron-vs-quartz parsing convention for dayOfWeek part in CronExpression #32131
🔨 Dependency Upgrades
- Upgrade to Reactor 2020.0.41 #32276
v6.0.17
⭐ New Features
- RouterFunctionMapping does not implement MatchableHandlerMapping #32222
- Optimize Map methods in ServletAttributesMap #32197
🐞 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
📔 Documentation
- Update basics.adoc #32151
- Document cron-vs-quartz parsing convention for dayOfWeek part in CronExpression #32130
🔨 Dependency Upgrades
- Upgrade to Reactor 2022.0.16 #32275
v6.1.4
⭐ 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
forDynamicValuesPropertySource
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
🐞 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 notfinal
and has apublic
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()
inHandlerMethod
from6.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 fromRestTemplate
twice #32038DefaultRestClientBuilder.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
📔 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
tocds.html
#32044 - Enable table striping by default in the reference manual #32022
- Document that Conditions can be ordered #32019
- Document how
@JvmName
could mitigate Kotlininternal
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
🔨 Dependency Upgrades
- Upgrade to Micrometer 1.12.3 and Context Propagation 1.1.1 #32277
- Upgrade to Reactor 2023.0.3 #32274
❤️ 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