Commit Graph
1433 Commits
Author SHA1 Message Date
crapxxi 5cf401758d Reuse cached PathPattern
See gh-51852

Signed-off-by: crapxxi <aibynkairatov@gmail.com>
2026-09-28 11:09:26 +02:00
Stéphane Nicoll 593344ccc1 Merge branch '4.1.x'
Closes gh-51885
2026-09-28 11:07:19 +02:00
Stéphane Nicoll dda41fef36 Merge branch '4.0.x' into 4.1.x
Closes gh-51884
2026-09-28 11:07:14 +02:00
Tran Ngoc Nhan 3fe8d42485 Remove unnecessary cast to null
See gh-51850

Signed-off-by: Tran Ngoc Nhan <ngocnhan.tran1996@gmail.com>
2026-09-28 10:54:13 +02:00
Stéphane Nicoll 0fe97e3da2 Polish "Add property to enable Caffeine async cache mode"
Restructured to spring.cache.caffeine.cache-mode with an enum that can
be "native" or "async". Also clarified in the documentation the scope
of the property and that custom caches are not affected.

See gh-51844
2026-09-28 10:45:01 +02:00
seonghun lee 4e4cdc3fda Add property to enable Caffeine async cache mode
CaffeineCacheManager supports asynchronous caches backed by Caffeine's
AsyncCache via setAsyncCacheMode, which adds support for Cache.retrieve.

Add a spring.cache.caffeine.async property (default false) wired to
CaffeineCacheManager.setAsyncCacheMode in CaffeineCacheConfiguration.

See gh-51844

Signed-off-by: seonghun lee <harrisleesh@gmail.com>
2026-09-28 10:12:51 +02:00
Stéphane Nicoll 0eed305ce0 Merge branch '4.1.x'
Closes gh-51878
2026-09-28 10:11:22 +02:00
Stéphane Nicoll a2a08124f1 Merge branch '4.0.x' into 4.1.x
Closes gh-51877
2026-09-28 10:11:10 +02:00
Stéphane Nicoll a55d5985fc Polish contribution
See gh-51842
2026-09-28 10:06:38 +02:00
Dmitry Sulman ea72da3604 Apply auto-configured Kotlinx Serialization JSON codec customization
See gh-51842

Signed-off-by: Dmitry Sulman <dmitry.sulman@gmail.com>
2026-09-28 10:05:53 +02:00
Stéphane Nicoll 097319ecf9 Polish "Check resource existence once when looking for deleted files"
See gh-51841
2026-09-28 09:40:24 +02:00
DongHoon Lee 5c2ad14f50 Check resource existence once when looking for deleted files
ClassLoaderFilesResourcePatternResolver.isDeleted() calls
resource.exists() and resource.getURI() inside the loop over the
uploaded files, so both are repeated once per DELETED entry although
neither depends on the entry. Every resource lookup made while the
application context is being built goes through this method - about
1300 times per restart in the application I measured - so a session
that has accumulated 100 deleted files performs around 130 000 file
system lookups where 1300 are enough.

This commit hoists both calls out of the loop: the resource is
inspected at most once per call, on the first DELETED entry, and the
URI comparison then uses the cached value. The method still returns on
the first match and still reports a failing getURI() as an
IllegalStateException, so behaviour is unchanged.

The loop now walks the per-directory entry sets, which is what
ClassLoaderFiles.addAll() and RestartServer already do, instead of the
flattened view added in gh-46289. That view is wrapped in
Collections.unmodifiableSet(), whose iterator is shared JDK code; in a
running application its delegate calls are megamorphic and C2 stops
inlining them, which made restarts with many accumulated files and no
deletions slower than before gh-46289. isDeleted() returns a boolean,
so the visiting order of the entries cannot change its result.

Measured on a Spring Boot application driven through the remote restart
path (restart request to ApplicationReadyEvent), 12 JVMs per variant
and 20 restarts per JVM, medians:

  100 source directories, 10 000 entries, 10 deleted:  278 ms -> 200 ms
  100 source directories, 10 000 entries, 100 deleted: 891 ms -> 201 ms
  100 source directories, 10 000 entries, 500 deleted: 3536 ms -> 200 ms
  100 source directories, 50 000 entries, none deleted: 431 ms -> 341 ms
  100 source directories, 10 000 entries, none deleted: 202 ms -> 192 ms
  no uploaded files:                                   150 ms -> 148 ms

See gh-51841

Signed-off-by: DongHoon Lee <dhl1924@naver.com>
2026-09-28 09:26:41 +02:00
Phillip Webb 789e06631b Merge branch '4.1.x'
Closes gh-51866
2026-09-25 15:35:31 -07:00
Phillip Webb caec174dee Merge branch '4.0.x' into 4.1.x
Closes gh-51865
2026-09-25 15:35:16 -07:00
itaekyung a0df183115 Enable nullability checking of spring-boot-jersey's tests
See gh-51861

Signed-off-by: itaekyung <taeyun1411@gmail.com>
2026-09-25 15:32:57 -07:00
Phillip Webb cb1f5440bb Merge branch '4.1.x'
Closes gh-51829
2026-09-17 17:01:30 -07:00
Phillip Webb 9b531f1043 Merge branch '4.0.x' into 4.1.x
Closes gh-51828
2026-09-17 17:01:25 -07:00
Andy Wilkinson 02cf5b8d0f Polish "Configure OpenTelemetry semantic conventions"
See gh-49241

Signed-off-by: Andy Wilkinson <andy.wilkinson@broadcom.com>
2026-09-17 10:18:17 +01:00
Tommy Ludwig 7d43f31732 Configure OpenTelemetry semantic conventions
Adds a management.observations.conventions property to control which
set of conventions are auto-configured across the application.

Configures WebMvc and WebFlux ServerRequestObservationConvention
beans to switch to OpenTelemetry conventions when configured.

Configures JVM and system meter binders using their builder APIs to
apply OpenTelemetry conventions while still allowing individual
meter conventions to be overridden via beans.

Signed-off-by: Tommy Ludwig <8924140+shakuzen@users.noreply.github.com>

See gh-49241
2026-09-17 09:41:16 +01:00
Stéphane Nicoll a95073958c Deprecate AppOptics as it has retired
Closes gh-51810
2026-09-17 08:09:04 +02:00
Stéphane Nicoll d479a6a42f Polish "Align use of transaction manager in MongoDB support"
See gh-51725
2026-09-16 19:43:03 +02:00
Yanming Zhou f5b8c5a72d Align use of transaction manager in MongoDB support
See gh-51725

Signed-off-by: Yanming Zhou <zhouyanming@gmail.com>
2026-09-16 19:24:47 +02:00
Nikita Kibitkin 3c6f7a54d3 Add property to await async listener results on stop
Spring Kafka 4.2 adds ContainerProperties#setAwaitAsyncResultsOnStop:
when the container stops, in-flight asynchronous listener results
(CompletableFuture, Mono, Kotlin suspend functions) are awaited within
the shutdown timeout and cancelled afterwards, so that listener work
does not outlive the container.

This commit adds spring.kafka.listener.await-async-results-on-stop so
that this can be enabled with configuration rather than a
ContainerCustomizer.

See gh-51774

Signed-off-by: Nikita Kibitkin <nikita.n.kibitkin@gmail.com>
2026-09-16 15:13:31 +01:00
Stéphane Nicoll 6bdd6ce8b6 Start building against Micrometer Tracing 1.8.0-M2 snapshots
See gh-51777
2026-09-16 15:22:24 +02:00
Stéphane Nicoll 72524bcb9e Start building against Micrometer 1.18.0-M2 snapshots
See gh-51776
2026-09-16 15:22:23 +02:00
htjworld 5a27fd928e Retain defaults when configuring other props on probe health groups
See gh-50296

Signed-off-by: htjworld <itjhan01@gmail.com>
2026-09-16 11:26:49 +01:00
Andy Wilkinson b2ed9b6938 Merge branch '4.1.x'
Closes gh-51782
2026-09-16 11:15:55 +01:00
HongJongMin 88ab24ff99 Enable nullability checking of spring-boot-batch-data-mongodb's tests
Signed-off-by: HongJongMin <gwa7417@gmail.com>

See gh-51780
2026-09-16 11:14:11 +01:00
Wan bin yu 3aa96f2229 Support multi-segment additional health paths
Signed-off-by: Wan bin yu <3431359639@qq.com>

See gh-51470
2026-09-16 10:22:31 +01:00
Andy Wilkinson 1f3209130d Merge branch '4.1.x' 2026-09-16 09:09:24 +01:00
Andy Wilkinson 6fe126afed Merge branch '4.0.x' into 4.1.x 2026-09-16 09:09:12 +01:00
Andy Wilkinson d9abd902f5 Revert "Merge pull request #51549 from aashikantkumar"
This reverts commit ad8f14e785, reversing
changes made to 1d79f56ad7.

See gh-51549
2026-09-16 09:08:23 +01:00
Stéphane Nicoll dcbb307d3e Add support for dedicated KafkaAdmin for listener and template
This commit adds a spring.kafka.listener.admin and
spring.kafka.template.admin namespace with similar configuration
properties than spring.kafka.admin, used to create the KafkaAdmin bean.

When a property is configured in those two namespaces, a dedicated
KafkaAdmin is created and associated with the relevant component.

Closes gh-38830
2026-09-15 15:39:27 +02:00
Stéphane Nicoll d031631709 Introduce KafkaConfigBuilder
This commit introduces a centralized way of building Kafka config
properties, and deprecate the equivalent in KafkaProperties. This
also removes the customization done in auto-configuration so that
KafkaConfigBuilder is the sole source mapping.

KafkaConfigBuilder also takes care of applying ConnectionDetails if
necessary.

Closes gh-51769
2026-09-15 15:39:27 +02:00
Andy Wilkinson 1d44394d1f Merge branch '4.1.x'
Closes gh-51767
2026-09-15 13:30:51 +01:00
Hyun Lee fa8ecccc37 Apply cookie handling to reactive HttpComponents connector
The spring.http.clients.cookie-handling property and
HttpClientSettings.cookieHandling() were honored by every imperative
ClientHttpRequestFactoryBuilder and by the Jetty, JDK and Reactor
ClientHttpConnectorBuilders, but HttpComponentsHttpAsyncClientBuilder
ignored the setting. As a result, a WebClient backed by Apache
HttpComponents kept storing cookies even when cookie handling was
disabled.

Map the setting to the default request config's cookie spec, as
HttpComponentsHttpClientBuilder already does, and document the property
alongside the other global HTTP client settings.

See gh-51724

Signed-off-by: Hyun Lee <dlwhdugs4147@gmail.com>
2026-09-15 13:22:25 +01:00
Andy Wilkinson bc72f228c3 Merge branch '4.1.x'
Closes gh-51764
2026-09-15 13:03:19 +01:00
Andy Wilkinson 7612f4a222 Merge branch '4.0.x' into 4.1.x
Closes gh-51763
2026-09-15 13:03:03 +01:00
Hyunwoo Jung ed63da9f5d Fix duplicated tests
Signed-off-by: Hyunwoo Jung <hyunwoojung@kakao.com>

See gh-51722
2026-09-15 12:48:22 +01:00
Brian Clozel 8b22099f77 Configure allowed HTTP methods in GraphQL transports
This commit adds new "spring.graphql.http.methods" and
"spring.graphql.http.sse.methods" configuration properties that let you
configure the allowed HTTP methods for the given transports.

Closes gh-51732
2026-09-14 12:00:40 +02:00
Brian Clozel 8798aa6350 Switch to Spring for GraphQL 2.1.0-SNAPSHOT
See gh-51713
2026-09-14 12:00:40 +02:00
Stéphane Nicoll 4bc86fedc4 Merge branch '4.1.x'
Closes gh-51731
2026-09-14 11:42:22 +02:00
Stéphane Nicoll cd6efbd910 Merge branch '4.0.x' into 4.1.x
Closes gh-51730
2026-09-14 11:42:14 +02:00
Stéphane Nicoll 5c799bc0cf Polish "Fix detection of reactive web environments in DevTools"
See gh-51708
2026-09-14 11:34:05 +02:00
ohchanKyu f5b563934a Fix detection of reactive web environments in DevTools
DevToolsPropertyDefaultsPostProcessor looked for
ConfigurableReactiveWebEnvironment
in org.springframework.boot.web.reactive.context by name, but the class
moved to org.springframework.boot.web.context.reactive in 4.0. As a
result, reactive web applications were never identified as web
applications and the hint about setting logging.level.web to DEBUG was
not logged for them.

ConfigurableReactiveWebEnvironment is part of spring-boot, so it is now
referenced directly rather than by name. The servlet environment check
is unchanged as spring-web is an optional dependency.

See gh-51708

Signed-off-by: ohchanKyu <okc0202@naver.com>
2026-09-14 11:09:40 +02:00
Stéphane Nicoll 9c36a0cdd5 Merge branch '4.1.x'
Closes gh-51729
2026-09-14 10:58:48 +02:00
Stéphane Nicoll 8b6a7863a9 Merge branch '4.0.x' into 4.1.x
Closes gh-51728
2026-09-14 10:58:39 +02:00
ohchanKyu 911c4a4326 Fix documented default of spring.test.database.replace
The default of @AutoConfigureTestDatabase's replace attribute changed
from ANY to NON_TEST in 3.4 but the manually declared metadata for
spring.test.database.replace still advertised "any" as the default.

See gh-51709

Signed-off-by: ohchanKyu <okc0202@naver.com>
2026-09-14 10:57:58 +02:00
Stéphane Nicoll 58b8ce6cca Merge branch '4.1.x'
Closes gh-51721
2026-09-13 17:21:31 +02:00
Stéphane Nicoll 5c7eea8a84 Merge branch '4.0.x' into 4.1.x
Closes gh-51720
2026-09-13 17:21:20 +02:00