From 29b745215e087697c1e6fe1d365c196afe331b9e Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 12 May 2025 09:00:55 +0100 Subject: [PATCH] Move code from spring-boot-actuator to spring-boot-jdbc --- .../jdbc/DataSourceHealthContributorAutoConfiguration.java | 4 ++-- .../jdbc/DataSourceHealthIndicatorProperties.java | 2 +- .../jdbc/DataSourcePoolMetricsAutoConfiguration.java | 2 +- .../DataSourceHealthContributorAutoConfigurationTests.java | 2 +- .../docs/health/HealthEndpointDocumentationTests.java | 2 +- spring-boot-project/spring-boot-actuator/build.gradle | 1 - spring-boot-project/spring-boot-jdbc/build.gradle | 4 ++++ .../jdbc/actuate/health}/DataSourceHealthIndicator.java | 6 +++--- .../boot/jdbc/actuate/health}/package-info.java | 6 +++--- .../boot/jdbc/actuate/metrics}/DataSourcePoolMetrics.java | 4 ++-- .../boot/jdbc/actuate/metrics}/package-info.java | 6 +++--- .../actuate/health}/DataSourceHealthIndicatorTests.java | 4 ++-- .../jdbc/actuate/metrics}/DataSourcePoolMetricsTests.java | 4 ++-- 13 files changed, 25 insertions(+), 22 deletions(-) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc => spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/health}/DataSourceHealthIndicator.java (97%) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/jdbc => spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/health}/package-info.java (79%) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/jdbc => spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/metrics}/DataSourcePoolMetrics.java (98%) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc => spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/metrics}/package-info.java (81%) rename spring-boot-project/{spring-boot-actuator/src/test/java/org/springframework/boot/actuate/jdbc => spring-boot-jdbc/src/test/java/org/springframework/boot/jdbc/actuate/health}/DataSourceHealthIndicatorTests.java (97%) rename spring-boot-project/{spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/jdbc => spring-boot-jdbc/src/test/java/org/springframework/boot/jdbc/actuate/metrics}/DataSourcePoolMetricsTests.java (95%) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfiguration.java index d6fc5a6b8f..e7ed05cfe5 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfiguration.java @@ -34,13 +34,13 @@ import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnable import org.springframework.boot.actuate.health.CompositeHealthContributor; import org.springframework.boot.actuate.health.HealthContributor; import org.springframework.boot.actuate.health.NamedContributor; -import org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.jdbc.actuate.health.DataSourceHealthIndicator; import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; import org.springframework.boot.jdbc.metadata.CompositeDataSourcePoolMetadataProvider; import org.springframework.boot.jdbc.metadata.DataSourcePoolMetadata; @@ -64,7 +64,7 @@ import org.springframework.util.Assert; * @since 2.0.0 */ @AutoConfiguration(after = DataSourceAutoConfiguration.class) -@ConditionalOnClass({ JdbcTemplate.class, AbstractRoutingDataSource.class }) +@ConditionalOnClass({ JdbcTemplate.class, AbstractRoutingDataSource.class, DataSourceHealthIndicator.class }) @ConditionalOnBean(DataSource.class) @ConditionalOnEnabledHealthIndicator("db") @EnableConfigurationProperties(DataSourceHealthIndicatorProperties.class) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorProperties.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorProperties.java index 5adf77f4e2..e78de4d2d9 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorProperties.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthIndicatorProperties.java @@ -16,8 +16,8 @@ package org.springframework.boot.actuate.autoconfigure.jdbc; -import org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.actuate.health.DataSourceHealthIndicator; /** * External configuration properties for {@link DataSourceHealthIndicator}. diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfiguration.java index 6b7061c089..8dc9786ab1 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfiguration.java @@ -36,12 +36,12 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.SimpleAutowireCandidateResolver; import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration; -import org.springframework.boot.actuate.metrics.jdbc.DataSourcePoolMetrics; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.jdbc.DataSourceUnwrapper; +import org.springframework.boot.jdbc.actuate.metrics.DataSourcePoolMetrics; import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; import org.springframework.boot.jdbc.metadata.DataSourcePoolMetadataProvider; import org.springframework.context.annotation.Bean; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfigurationTests.java index 016f85a86c..470c40af44 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/jdbc/DataSourceHealthContributorAutoConfigurationTests.java @@ -33,11 +33,11 @@ import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAu import org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthContributorAutoConfiguration.RoutingDataSourceHealthContributor; import org.springframework.boot.actuate.health.CompositeHealthContributor; import org.springframework.boot.actuate.health.NamedContributor; -import org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.boot.jdbc.actuate.health.DataSourceHealthIndicator; import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; import org.springframework.boot.jdbc.autoconfigure.EmbeddedDataSourceConfiguration; import org.springframework.boot.jdbc.metadata.autoconfigure.DataSourcePoolMetadataProvidersConfiguration; diff --git a/spring-boot-project/spring-boot-actuator-docs/src/test/java/org/springframework/boot/actuate/docs/health/HealthEndpointDocumentationTests.java b/spring-boot-project/spring-boot-actuator-docs/src/test/java/org/springframework/boot/actuate/docs/health/HealthEndpointDocumentationTests.java index a4ca856e12..8c6e51a4e2 100644 --- a/spring-boot-project/spring-boot-actuator-docs/src/test/java/org/springframework/boot/actuate/docs/health/HealthEndpointDocumentationTests.java +++ b/spring-boot-project/spring-boot-actuator-docs/src/test/java/org/springframework/boot/actuate/docs/health/HealthEndpointDocumentationTests.java @@ -42,9 +42,9 @@ import org.springframework.boot.actuate.health.HttpCodeStatusMapper; import org.springframework.boot.actuate.health.SimpleHttpCodeStatusMapper; import org.springframework.boot.actuate.health.SimpleStatusAggregator; import org.springframework.boot.actuate.health.StatusAggregator; -import org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator; import org.springframework.boot.actuate.system.DiskSpaceHealthIndicator; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.jdbc.actuate.health.DataSourceHealthIndicator; import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot-project/spring-boot-actuator/build.gradle b/spring-boot-project/spring-boot-actuator/build.gradle index 8e2f9a829d..4cf6703a15 100644 --- a/spring-boot-project/spring-boot-actuator/build.gradle +++ b/spring-boot-project/spring-boot-actuator/build.gradle @@ -24,7 +24,6 @@ dependencies { dockerTestImplementation("org.testcontainers:testcontainers") optional(project(":spring-boot-project:spring-boot-http-converter")) - optional(project(":spring-boot-project:spring-boot-jdbc")) optional(project(":spring-boot-project:spring-boot-jetty")) optional(project(":spring-boot-project:spring-boot-jsonb")) optional(project(":spring-boot-project:spring-boot-reactor-netty")) diff --git a/spring-boot-project/spring-boot-jdbc/build.gradle b/spring-boot-project/spring-boot-jdbc/build.gradle index 922b3aa833..314e27be64 100644 --- a/spring-boot-project/spring-boot-jdbc/build.gradle +++ b/spring-boot-project/spring-boot-jdbc/build.gradle @@ -13,14 +13,18 @@ dependencies { api(project(":spring-boot-project:spring-boot-sql")) api("org.springframework:spring-jdbc") + compileOnly("com.fasterxml.jackson.core:jackson-annotations") + implementation(project(":spring-boot-project:spring-boot-tx")) + optional(project(":spring-boot-project:spring-boot-actuator")) optional(project(":spring-boot-project:spring-boot-autoconfigure")) optional("com.h2database:h2") optional("com.mchange:c3p0") optional("com.oracle.database.jdbc:ojdbc11") optional("com.oracle.database.jdbc:ucp11") optional("com.zaxxer:HikariCP") + optional("io.micrometer:micrometer-core") optional("org.apache.commons:commons-dbcp2") { exclude group: "commons-logging", module: "commons-logging" } diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc/DataSourceHealthIndicator.java b/spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/health/DataSourceHealthIndicator.java similarity index 97% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc/DataSourceHealthIndicator.java rename to spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/health/DataSourceHealthIndicator.java index c82f421779..31b61e5a48 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc/DataSourceHealthIndicator.java +++ b/spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/health/DataSourceHealthIndicator.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.jdbc; +package org.springframework.boot.jdbc.actuate.health; import java.sql.Connection; import java.sql.ResultSet; @@ -47,7 +47,7 @@ import org.springframework.util.StringUtils; * @author Andy Wilkinson * @author Stephane Nicoll * @author Arthur Kalimullin - * @since 2.0.0 + * @since 4.0.0 */ public class DataSourceHealthIndicator extends AbstractHealthIndicator implements InitializingBean { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/jdbc/package-info.java b/spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/health/package-info.java similarity index 79% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/jdbc/package-info.java rename to spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/health/package-info.java index 522ff74295..6ea6df73af 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/jdbc/package-info.java +++ b/spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/health/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,6 @@ */ /** - * Actuator support for JDBC metrics. + * Health integration for JDBC. */ -package org.springframework.boot.actuate.metrics.jdbc; +package org.springframework.boot.jdbc.actuate.health; diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/jdbc/DataSourcePoolMetrics.java b/spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/metrics/DataSourcePoolMetrics.java similarity index 98% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/jdbc/DataSourcePoolMetrics.java rename to spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/metrics/DataSourcePoolMetrics.java index afa0efc360..493861313c 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/jdbc/DataSourcePoolMetrics.java +++ b/spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/metrics/DataSourcePoolMetrics.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.metrics.jdbc; +package org.springframework.boot.jdbc.actuate.metrics; import java.util.Collection; import java.util.Map; @@ -39,7 +39,7 @@ import org.springframework.util.ConcurrentReferenceHashMap; * * @author Jon Schneider * @author Phillip Webb - * @since 2.0.0 + * @since 4.0.0 */ public class DataSourcePoolMetrics implements MeterBinder { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc/package-info.java b/spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/metrics/package-info.java similarity index 81% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc/package-info.java rename to spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/metrics/package-info.java index 0383083a11..c8f2f9db87 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/jdbc/package-info.java +++ b/spring-boot-project/spring-boot-jdbc/src/main/java/org/springframework/boot/jdbc/actuate/metrics/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,6 @@ */ /** - * Actuator support for JDBC. + * Metrics for JDBC. */ -package org.springframework.boot.actuate.jdbc; +package org.springframework.boot.jdbc.actuate.metrics; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/jdbc/DataSourceHealthIndicatorTests.java b/spring-boot-project/spring-boot-jdbc/src/test/java/org/springframework/boot/jdbc/actuate/health/DataSourceHealthIndicatorTests.java similarity index 97% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/jdbc/DataSourceHealthIndicatorTests.java rename to spring-boot-project/spring-boot-jdbc/src/test/java/org/springframework/boot/jdbc/actuate/health/DataSourceHealthIndicatorTests.java index e966edf915..9c4be6791b 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/jdbc/DataSourceHealthIndicatorTests.java +++ b/spring-boot-project/spring-boot-jdbc/src/test/java/org/springframework/boot/jdbc/actuate/health/DataSourceHealthIndicatorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.jdbc; +package org.springframework.boot.jdbc.actuate.health; import java.sql.Connection; import java.sql.SQLException; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/jdbc/DataSourcePoolMetricsTests.java b/spring-boot-project/spring-boot-jdbc/src/test/java/org/springframework/boot/jdbc/actuate/metrics/DataSourcePoolMetricsTests.java similarity index 95% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/jdbc/DataSourcePoolMetricsTests.java rename to spring-boot-project/spring-boot-jdbc/src/test/java/org/springframework/boot/jdbc/actuate/metrics/DataSourcePoolMetricsTests.java index c9f98d3e46..dfd6e63dc8 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/jdbc/DataSourcePoolMetricsTests.java +++ b/spring-boot-project/spring-boot-jdbc/src/test/java/org/springframework/boot/jdbc/actuate/metrics/DataSourcePoolMetricsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.metrics.jdbc; +package org.springframework.boot.jdbc.actuate.metrics; import java.util.Collection; import java.util.Collections;