diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/r2dbc/ConnectionPoolMetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/r2dbc/ConnectionPoolMetricsAutoConfiguration.java index e4fa53cd5a..2a8d09c08e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/r2dbc/ConnectionPoolMetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/r2dbc/ConnectionPoolMetricsAutoConfiguration.java @@ -27,11 +27,11 @@ 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.r2dbc.ConnectionPoolMetrics; 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.r2dbc.actuate.metrics.ConnectionPoolMetrics; import org.springframework.boot.r2dbc.autoconfigure.R2dbcAutoConfiguration; /** diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/r2dbc/ConnectionFactoryHealthContributorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/r2dbc/ConnectionFactoryHealthContributorAutoConfiguration.java index 9b3dff54c4..447a6caf69 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/r2dbc/ConnectionFactoryHealthContributorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/r2dbc/ConnectionFactoryHealthContributorAutoConfiguration.java @@ -22,12 +22,12 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.boot.actuate.autoconfigure.health.CompositeReactiveHealthContributorConfiguration; import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.health.ReactiveHealthContributor; -import org.springframework.boot.actuate.r2dbc.ConnectionFactoryHealthIndicator; 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.r2dbc.actuate.health.ConnectionFactoryHealthIndicator; import org.springframework.boot.r2dbc.autoconfigure.R2dbcAutoConfiguration; import org.springframework.context.annotation.Bean; @@ -39,7 +39,7 @@ import org.springframework.context.annotation.Bean; * @since 2.3.0 */ @AutoConfiguration(after = R2dbcAutoConfiguration.class) -@ConditionalOnClass(ConnectionFactory.class) +@ConditionalOnClass({ ConnectionFactory.class, ConnectionFactoryHealthIndicator.class }) @ConditionalOnBean(ConnectionFactory.class) @ConditionalOnEnabledHealthIndicator("r2dbc") public class ConnectionFactoryHealthContributorAutoConfiguration diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/r2dbc/ConnectionFactoryHealthContributorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/r2dbc/ConnectionFactoryHealthContributorAutoConfigurationTests.java index 7b03dc3f97..f34d1bf36e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/r2dbc/ConnectionFactoryHealthContributorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/r2dbc/ConnectionFactoryHealthContributorAutoConfigurationTests.java @@ -19,8 +19,8 @@ package org.springframework.boot.actuate.autoconfigure.r2dbc; import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration; -import org.springframework.boot.actuate.r2dbc.ConnectionFactoryHealthIndicator; import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.r2dbc.actuate.health.ConnectionFactoryHealthIndicator; import org.springframework.boot.r2dbc.autoconfigure.R2dbcAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/spring-boot-project/spring-boot-actuator/build.gradle b/spring-boot-project/spring-boot-actuator/build.gradle index 4e220c3891..d1820819b5 100644 --- a/spring-boot-project/spring-boot-actuator/build.gradle +++ b/spring-boot-project/spring-boot-actuator/build.gradle @@ -33,8 +33,6 @@ dependencies { optional("io.micrometer:micrometer-registry-prometheus-simpleclient") optional("io.prometheus:prometheus-metrics-exposition-formats") optional("io.prometheus:prometheus-metrics-exporter-pushgateway") - optional("io.r2dbc:r2dbc-pool") - optional("io.r2dbc:r2dbc-spi") optional("io.undertow:undertow-servlet") optional("javax.cache:cache-api") optional("org.apache.tomcat.embed:tomcat-embed-core") @@ -81,7 +79,6 @@ dependencies { testImplementation("com.squareup.okhttp3:mockwebserver") testImplementation("io.micrometer:micrometer-observation-test") testImplementation("io.projectreactor:reactor-test") - testImplementation("io.r2dbc:r2dbc-h2") testImplementation("net.minidev:json-smart") testImplementation("org.apache.logging.log4j:log4j-to-slf4j") testImplementation("org.glassfish.jersey.media:jersey-media-json-jackson") diff --git a/spring-boot-project/spring-boot-r2dbc/build.gradle b/spring-boot-project/spring-boot-r2dbc/build.gradle index 88572afcc1..0136a2eeae 100644 --- a/spring-boot-project/spring-boot-r2dbc/build.gradle +++ b/spring-boot-project/spring-boot-r2dbc/build.gradle @@ -14,13 +14,20 @@ dependencies { api(project(":spring-boot-project:spring-boot-sql")) api(project(":spring-boot-project:spring-boot-tx")) api("org.springframework:spring-r2dbc") + api("org.springframework:spring-r2dbc") + compileOnly("com.fasterxml.jackson.core:jackson-annotations") + + optional(project(":spring-boot-project:spring-boot-actuator")) optional(project(":spring-boot-project:spring-boot-autoconfigure")) optional(project(":spring-boot-project:spring-boot-jdbc")) + optional("io.micrometer:micrometer-core") optional("io.r2dbc:r2dbc-pool") optional("io.r2dbc:r2dbc-proxy") optional("io.r2dbc:r2dbc-spi") + testCompileOnly("com.fasterxml.jackson.core:jackson-annotations") + testImplementation(project(":spring-boot-project:spring-boot-jdbc")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/r2dbc/ConnectionFactoryHealthIndicator.java b/spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/health/ConnectionFactoryHealthIndicator.java similarity index 98% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/r2dbc/ConnectionFactoryHealthIndicator.java rename to spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/health/ConnectionFactoryHealthIndicator.java index 07a0fcd1c2..f3fc8ff0f2 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/r2dbc/ConnectionFactoryHealthIndicator.java +++ b/spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/health/ConnectionFactoryHealthIndicator.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.r2dbc; +package org.springframework.boot.r2dbc.actuate.health; import io.r2dbc.spi.Connection; import io.r2dbc.spi.ConnectionFactory; @@ -37,7 +37,7 @@ import org.springframework.util.StringUtils; * * @author Mark Paluch * @author Stephane Nicoll - * @since 2.3.0 + * @since 4.0.0 */ public class ConnectionFactoryHealthIndicator extends AbstractReactiveHealthIndicator { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/r2dbc/package-info.java b/spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/health/package-info.java similarity index 79% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/r2dbc/package-info.java rename to spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/health/package-info.java index d0545dbb16..61235f5e47 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/r2dbc/package-info.java +++ b/spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/health/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 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 R2DBC metrics. + * Health integration for R2DBC. */ -package org.springframework.boot.actuate.metrics.r2dbc; +package org.springframework.boot.r2dbc.actuate.health; diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/r2dbc/ConnectionPoolMetrics.java b/spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/metrics/ConnectionPoolMetrics.java similarity index 95% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/r2dbc/ConnectionPoolMetrics.java rename to spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/metrics/ConnectionPoolMetrics.java index 36a499fc0f..c044c8f1e5 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/r2dbc/ConnectionPoolMetrics.java +++ b/spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/metrics/ConnectionPoolMetrics.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.r2dbc; +package org.springframework.boot.r2dbc.actuate.metrics; import io.micrometer.core.instrument.Gauge; import io.micrometer.core.instrument.Gauge.Builder; @@ -30,7 +30,7 @@ import io.r2dbc.pool.PoolMetrics; * * @author Tadaya Tsuyukubo * @author Stephane Nicoll - * @since 2.3.0 + * @since 4.0.0 */ public class ConnectionPoolMetrics implements MeterBinder { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/r2dbc/package-info.java b/spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/metrics/package-info.java similarity index 81% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/r2dbc/package-info.java rename to spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/metrics/package-info.java index f40b99451b..8bdbba3f56 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/r2dbc/package-info.java +++ b/spring-boot-project/spring-boot-r2dbc/src/main/java/org/springframework/boot/r2dbc/actuate/metrics/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 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 R2DBC. + * Metrics for R2DBC. */ -package org.springframework.boot.actuate.r2dbc; +package org.springframework.boot.r2dbc.actuate.metrics; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/r2dbc/ConnectionFactoryHealthIndicatorTests.java b/spring-boot-project/spring-boot-r2dbc/src/test/java/org/springframework/boot/r2dbc/actuate/health/ConnectionFactoryHealthIndicatorTests.java similarity index 98% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/r2dbc/ConnectionFactoryHealthIndicatorTests.java rename to spring-boot-project/spring-boot-r2dbc/src/test/java/org/springframework/boot/r2dbc/actuate/health/ConnectionFactoryHealthIndicatorTests.java index 1da4777744..a7371bb3d8 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/r2dbc/ConnectionFactoryHealthIndicatorTests.java +++ b/spring-boot-project/spring-boot-r2dbc/src/test/java/org/springframework/boot/r2dbc/actuate/health/ConnectionFactoryHealthIndicatorTests.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.r2dbc; +package org.springframework.boot.r2dbc.actuate.health; import java.time.Duration; import java.util.Collections; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/r2dbc/ConnectionPoolMetricsTests.java b/spring-boot-project/spring-boot-r2dbc/src/test/java/org/springframework/boot/r2dbc/actuate/metrics/ConnectionPoolMetricsTests.java similarity index 96% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/r2dbc/ConnectionPoolMetricsTests.java rename to spring-boot-project/spring-boot-r2dbc/src/test/java/org/springframework/boot/r2dbc/actuate/metrics/ConnectionPoolMetricsTests.java index c833dd7f91..907344eaa7 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/r2dbc/ConnectionPoolMetricsTests.java +++ b/spring-boot-project/spring-boot-r2dbc/src/test/java/org/springframework/boot/r2dbc/actuate/metrics/ConnectionPoolMetricsTests.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.r2dbc; +package org.springframework.boot.r2dbc.actuate.metrics; import java.time.Duration; import java.util.Collections;