Commit Graph
1448 Commits
Author SHA1 Message Date
Phillip Webb ab8d5266fb Merge branch '4.1.x'
Closes gh-51898
2026-09-28 14:20:27 -07:00
Phillip Webb a5bc294685 Merge branch '4.0.x' into 4.1.x
Closes gh-51897
2026-09-28 14:20:12 -07:00
Phillip Webb 7a871ff117 Polish 'Use instanceof pattern matching to avoid an explicit cast'
See gh-51896
2026-09-28 14:18:55 -07:00
Tran Ngoc Nhan 68c321499a Use instanceof pattern matching to avoid an explicit cast
See gh-51896

Signed-off-by: Tran Ngoc Nhan <ngocnhan.tran1996@gmail.com>
2026-09-28 14:18:41 -07:00
Stéphane Nicoll 5f790ed584 Merge branch '4.1.x'
Closes gh-51891
2026-09-28 13:16:42 +02:00
Stéphane Nicoll 3af085d914 Merge branch '4.0.x' into 4.1.x
Closes gh-51890
2026-09-28 13:16:33 +02:00
Stéphane Nicoll e3805a9601 Polish contribution
See gh-51872
2026-09-28 13:08:02 +02:00
Kosuke Yanagihara f0987da4bb Back off DevTools' JDBC and R2DBC support when modules are missing
DevToolsDataSourceAutoConfiguration and DevToolsR2dbcAutoConfiguration
were only guarded by classes from the JDK and r2dbc-spi respectively.
When a single user-defined DataSource or ConnectionFactory bean was
present, their conditions went on to reference classes from
spring-boot-jdbc or spring-boot-r2dbc. Both are optional dependencies
of spring-boot-devtools, so startup failed with a NoClassDefFoundError
when they were absent.

This commit adds a class from each module to the class conditions.
Without the modules the conditions could never match, so this only
turns the failure into a back-off.

See gh-51872

Signed-off-by: Kosuke Yanagihara <11373191+ksky8864@users.noreply.github.com>
2026-09-28 12:44:47 +02:00
Stéphane Nicoll e8d93a7670 Merge branch '4.1.x'
Closes gh-51889
2026-09-28 12:42:38 +02:00
Stéphane Nicoll 708a58c2cf Merge branch '4.0.x' into 4.1.x
Closes gh-51888
2026-09-28 12:42:30 +02:00
ohchanKyu 5e2730eb01 Recognize MARIADB_ALLOW_EMPTY_ROOT_PASSWORD in Docker Compose support
MariaDbEnvironment checked for MARIADB_ALLOW_EMPTY_PASSWORD, which the
official MariaDB image does not support. The documented variable is
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD. As a result, a compose service that
used the documented variable started fine but Spring Boot failed with
"No MariaDB password found".

See gh-51870

Signed-off-by: ohchanKyu <okc0202@naver.com>
2026-09-28 12:41:32 +02:00
Stéphane Nicoll 9e334ee02c Merge branch '4.1.x'
Closes gh-51887
2026-09-28 11:23:22 +02:00
Stéphane Nicoll aecce0a0a5 Merge branch '4.0.x' into 4.1.x
Closes gh-51886
2026-09-28 11:23:16 +02:00
Hyunwoo Jung 032ed4eabf Fix actuator endpoint property names in Javadoc
See gh-51869

Signed-off-by: Hyunwoo Jung <hyunwoojung@kakao.com>
2026-09-28 11:21:22 +02:00
Stéphane Nicoll a249310e34 Polish "Reuse cached PathPattern"
See gh-51852
2026-09-28 11:17:41 +02:00
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