From 81771ecb24b2be03c0ad8ed8bd2c7fdd3e0a8e55 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 12 May 2025 12:19:02 +0100 Subject: [PATCH] Move code from spring-boot-actuator to spring-boot-http-client --- .../web/client/RestClientObservationConfiguration.java | 6 +++--- .../web/client/RestTemplateObservationConfiguration.java | 6 +++--- .../web/client/RestClientObservationConfigurationTests.java | 2 +- .../client/RestTemplateObservationConfigurationTests.java | 2 +- spring-boot-project/spring-boot-http-client/build.gradle | 1 + .../observation}/ObservationRestClientCustomizer.java | 4 ++-- .../observation}/ObservationRestTemplateCustomizer.java | 6 +++--- .../http/client/rest/actuate/observation}/package-info.java | 6 +++--- .../observation}/ObservationRestClientCustomizerTests.java | 4 ++-- .../ObservationRestTemplateCustomizerTests.java | 4 ++-- 10 files changed, 21 insertions(+), 20 deletions(-) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client => spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation}/ObservationRestClientCustomizer.java (96%) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client => spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation}/ObservationRestTemplateCustomizer.java (92%) rename spring-boot-project/{spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client => spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation}/package-info.java (75%) rename spring-boot-project/{spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client => spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation}/ObservationRestClientCustomizerTests.java (93%) rename spring-boot-project/{spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client => spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation}/ObservationRestTemplateCustomizerTests.java (93%) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.java index 6b97d6c65e..84f5302225 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.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. @@ -20,9 +20,9 @@ import io.micrometer.observation.ObservationRegistry; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties; -import org.springframework.boot.actuate.metrics.web.client.ObservationRestClientCustomizer; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestClientCustomizer; import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -36,7 +36,7 @@ import org.springframework.web.client.RestClient; * @author Moritz Halbritter */ @Configuration(proxyBeanMethods = false) -@ConditionalOnClass(RestClient.class) +@ConditionalOnClass({ RestClient.class, ObservationRestClientCustomizer.class }) @ConditionalOnBean(RestClient.Builder.class) class RestClientObservationConfiguration { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.java index 81fb154a23..1caf31d5b1 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.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. @@ -20,9 +20,9 @@ import io.micrometer.observation.ObservationRegistry; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties; -import org.springframework.boot.actuate.metrics.web.client.ObservationRestTemplateCustomizer; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestTemplateCustomizer; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -36,7 +36,7 @@ import org.springframework.web.client.RestTemplate; * @author Brian Clozel */ @Configuration(proxyBeanMethods = false) -@ConditionalOnClass(RestTemplate.class) +@ConditionalOnClass({ RestTemplate.class, ObservationRestTemplateCustomizer.class }) @ConditionalOnBean(RestTemplateBuilder.class) class RestTemplateObservationConfiguration { diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java index 8532a84154..9f5a35e470 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java @@ -25,8 +25,8 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; -import org.springframework.boot.actuate.metrics.web.client.ObservationRestClientCustomizer; import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestClientCustomizer; import org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java index 46728bc2ae..760bec84fc 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java @@ -25,8 +25,8 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; -import org.springframework.boot.actuate.metrics.web.client.ObservationRestTemplateCustomizer; import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestTemplateCustomizer; import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; diff --git a/spring-boot-project/spring-boot-http-client/build.gradle b/spring-boot-project/spring-boot-http-client/build.gradle index 606dcbdbbc..5c95587eff 100644 --- a/spring-boot-project/spring-boot-http-client/build.gradle +++ b/spring-boot-project/spring-boot-http-client/build.gradle @@ -20,6 +20,7 @@ dependencies { testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) + testImplementation("io.micrometer:micrometer-observation-test") testRuntimeOnly("ch.qos.logback:logback-classic") testRuntimeOnly("jakarta.servlet:jakarta.servlet-api") diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestClientCustomizer.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizer.java similarity index 96% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestClientCustomizer.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizer.java index 7ae543714d..c63978948b 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestClientCustomizer.java +++ b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.actuate.metrics.web.client; +package org.springframework.boot.http.client.rest.actuate.observation; import io.micrometer.observation.ObservationRegistry; @@ -28,7 +28,7 @@ import org.springframework.web.client.RestClient.Builder; * record request observations. * * @author Moritz Halbritter - * @since 3.2.0 + * @since 4.0.0 */ public class ObservationRestClientCustomizer implements RestClientCustomizer { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestTemplateCustomizer.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizer.java similarity index 92% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestTemplateCustomizer.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizer.java index 8bcb7ff29d..b21270107f 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestTemplateCustomizer.java +++ b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 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.web.client; +package org.springframework.boot.http.client.rest.actuate.observation; import io.micrometer.observation.ObservationRegistry; @@ -27,7 +27,7 @@ import org.springframework.web.client.RestTemplate; * request observations. * * @author Brian Clozel - * @since 3.0.0 + * @since 4.0.0 */ public class ObservationRestTemplateCustomizer implements RestTemplateCustomizer { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/package-info.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/package-info.java similarity index 75% rename from spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/package-info.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/package-info.java index ffd83dc2a4..6694cd293b 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/client/package-info.java +++ b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/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 web client metrics. + * Observation integration for RestClient and RestTemplate. */ -package org.springframework.boot.actuate.metrics.web.client; +package org.springframework.boot.http.client.rest.actuate.observation; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestClientCustomizerTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizerTests.java similarity index 93% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestClientCustomizerTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizerTests.java index b945b4d7f5..7d77028b76 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestClientCustomizerTests.java +++ b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizerTests.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.web.client; +package org.springframework.boot.http.client.rest.actuate.observation; import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.tck.TestObservationRegistry; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestTemplateCustomizerTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizerTests.java similarity index 93% rename from spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestTemplateCustomizerTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizerTests.java index 266a21cb23..349b920fe4 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/client/ObservationRestTemplateCustomizerTests.java +++ b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizerTests.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.web.client; +package org.springframework.boot.http.client.rest.actuate.observation; import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.tck.TestObservationRegistry;