diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 36d05d2e96f..7bb36bf448b 100644
--- a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -16,7 +16,6 @@ org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAuto
org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration
org.springframework.boot.actuate.autoconfigure.metrics.task.TaskExecutorMetricsAutoConfiguration
org.springframework.boot.actuate.autoconfigure.observability.ObservabilityAutoConfiguration
-org.springframework.boot.actuate.autoconfigure.observation.web.reactive.WebFluxObservationAutoConfiguration
org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration
org.springframework.boot.actuate.autoconfigure.sbom.SbomEndpointAutoConfiguration
org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java
index 7ea8b9e7365..e7030f3c37f 100644
--- a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java
@@ -35,7 +35,6 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.autoconfigure.observability.ObservabilityAutoConfiguration;
-import org.springframework.boot.actuate.autoconfigure.observation.web.reactive.WebFluxObservationAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration;
@@ -55,6 +54,7 @@ import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration;
import org.springframework.boot.web.server.test.client.TestRestTemplate;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.boot.webflux.observation.autoconfigure.WebFluxObservationAutoConfiguration;
import org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration;
import org.springframework.boot.webmvc.autoconfigure.WebMvcAutoConfiguration;
import org.springframework.context.ApplicationContext;
diff --git a/spring-boot-project/spring-boot-webflux/build.gradle b/spring-boot-project/spring-boot-webflux/build.gradle
index c5312454cfd..69a90811a96 100644
--- a/spring-boot-project/spring-boot-webflux/build.gradle
+++ b/spring-boot-project/spring-boot-webflux/build.gradle
@@ -35,6 +35,8 @@ dependencies {
optional(project(":spring-boot-project:spring-boot-actuator"))
optional(project(":spring-boot-project:spring-boot-autoconfigure"))
+ optional(project(":spring-boot-project:spring-boot-metrics"))
+ optional(project(":spring-boot-project:spring-boot-micrometer-observation"))
optional(project(":spring-boot-project:spring-boot-validation"))
testFixturesApi(testFixtures(project(":spring-boot-project:spring-boot-actuator")))
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/reactive/WebFluxObservationAutoConfiguration.java b/spring-boot-project/spring-boot-webflux/src/main/java/org/springframework/boot/webflux/observation/autoconfigure/WebFluxObservationAutoConfiguration.java
similarity index 89%
rename from spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/reactive/WebFluxObservationAutoConfiguration.java
rename to spring-boot-project/spring-boot-webflux/src/main/java/org/springframework/boot/webflux/observation/autoconfigure/WebFluxObservationAutoConfiguration.java
index ff0613512d1..96f3ab1ceab 100644
--- a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/reactive/WebFluxObservationAutoConfiguration.java
+++ b/spring-boot-project/spring-boot-webflux/src/main/java/org/springframework/boot/webflux/observation/autoconfigure/WebFluxObservationAutoConfiguration.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package org.springframework.boot.actuate.autoconfigure.observation.web.reactive;
+package org.springframework.boot.webflux.observation.autoconfigure;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.config.MeterFilter;
@@ -30,8 +30,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplicat
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.metrics.OnlyOnceLoggingDenyMeterFilter;
import org.springframework.boot.metrics.autoconfigure.MetricsProperties;
-import org.springframework.boot.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration;
-import org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration;
import org.springframework.boot.micrometer.observation.autoconfigure.ObservationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.core.annotation.Order;
@@ -46,9 +44,11 @@ import org.springframework.http.server.reactive.observation.ServerRequestObserva
* @author Jon Schneider
* @author Dmytro Nosan
* @author Moritz Halbritter
- * @since 3.0.0
+ * @since 4.0.0
*/
-@AutoConfiguration(after = { SimpleMetricsExportAutoConfiguration.class, ObservationAutoConfiguration.class })
+@AutoConfiguration(afterName = {
+ "org.springframework.boot.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration",
+ "org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration" })
@ConditionalOnClass({ Observation.class, MeterRegistry.class })
@ConditionalOnBean({ ObservationRegistry.class, MeterRegistry.class })
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE)
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/reactive/package-info.java b/spring-boot-project/spring-boot-webflux/src/main/java/org/springframework/boot/webflux/observation/autoconfigure/package-info.java
similarity index 89%
rename from spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/reactive/package-info.java
rename to spring-boot-project/spring-boot-webflux/src/main/java/org/springframework/boot/webflux/observation/autoconfigure/package-info.java
index ba2f819b506..29735a7f2e0 100644
--- a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/reactive/package-info.java
+++ b/spring-boot-project/spring-boot-webflux/src/main/java/org/springframework/boot/webflux/observation/autoconfigure/package-info.java
@@ -17,4 +17,4 @@
/**
* Auto-configuration for WebFlux actuator observations.
*/
-package org.springframework.boot.actuate.autoconfigure.observation.web.reactive;
+package org.springframework.boot.webflux.observation.autoconfigure;
diff --git a/spring-boot-project/spring-boot-webflux/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-webflux/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 68031040471..62e2c9a046d 100644
--- a/spring-boot-project/spring-boot-webflux/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/spring-boot-project/spring-boot-webflux/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -3,3 +3,4 @@ org.springframework.boot.webflux.autoconfigure.ReactiveMultipartAutoConfiguratio
org.springframework.boot.webflux.autoconfigure.WebFluxAutoConfiguration
org.springframework.boot.webflux.autoconfigure.WebSessionIdResolverAutoConfiguration
org.springframework.boot.webflux.autoconfigure.error.ErrorWebFluxAutoConfiguration
+org.springframework.boot.webflux.observation.autoconfigure.WebFluxObservationAutoConfiguration
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/reactive/WebFluxObservationAutoConfigurationTests.java b/spring-boot-project/spring-boot-webflux/src/test/java/org/springframework/boot/webflux/observation/autoconfigure/WebFluxObservationAutoConfigurationTests.java
similarity index 91%
rename from spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/reactive/WebFluxObservationAutoConfigurationTests.java
rename to spring-boot-project/spring-boot-webflux/src/test/java/org/springframework/boot/webflux/observation/autoconfigure/WebFluxObservationAutoConfigurationTests.java
index cb84a43a5c6..6aa17e9e9e1 100644
--- a/spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/reactive/WebFluxObservationAutoConfigurationTests.java
+++ b/spring-boot-project/spring-boot-webflux/src/test/java/org/springframework/boot/webflux/observation/autoconfigure/WebFluxObservationAutoConfigurationTests.java
@@ -14,17 +14,16 @@
* limitations under the License.
*/
-package org.springframework.boot.actuate.autoconfigure.observation.web.reactive;
+package org.springframework.boot.webflux.observation.autoconfigure;
import java.time.Duration;
import java.time.temporal.ChronoUnit;
import io.micrometer.core.instrument.MeterRegistry;
+import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
-import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
-import org.springframework.boot.actuate.autoconfigure.metrics.web.TestController;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
import org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration;
@@ -35,6 +34,8 @@ import org.springframework.boot.test.system.OutputCaptureExtension;
import org.springframework.boot.webflux.autoconfigure.WebFluxAutoConfiguration;
import org.springframework.http.server.reactive.observation.DefaultServerRequestObservationConvention;
import org.springframework.http.server.reactive.observation.ServerRequestObservationConvention;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
@@ -51,7 +52,7 @@ import static org.mockito.Mockito.mock;
class WebFluxObservationAutoConfigurationTests {
private final ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner()
- .with(MetricsRun.simple())
+ .withBean(SimpleMeterRegistry.class)
.withConfiguration(
AutoConfigurations.of(ObservationAutoConfiguration.class, WebFluxObservationAutoConfiguration.class));
@@ -130,4 +131,24 @@ class WebFluxObservationAutoConfigurationTests {
return meterRegistry;
}
+ @RestController
+ static class TestController {
+
+ @GetMapping("test0")
+ String test0() {
+ return "test0";
+ }
+
+ @GetMapping("test1")
+ String test1() {
+ return "test1";
+ }
+
+ @GetMapping("test2")
+ String test2() {
+ return "test2";
+ }
+
+ }
+
}
diff --git a/src/checkstyle/import-control.xml b/src/checkstyle/import-control.xml
index ebc0c3c0cea..06add03a8b3 100644
--- a/src/checkstyle/import-control.xml
+++ b/src/checkstyle/import-control.xml
@@ -61,6 +61,10 @@
+
+
+
+