diff --git a/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingAutoConfiguration.java b/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingAutoConfiguration.java index 741701942320..bd1891e3b0ae 100644 --- a/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingAutoConfiguration.java +++ b/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingAutoConfiguration.java @@ -26,6 +26,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.tracing.autoconfigure.ConditionalOnEnabledTracing; import org.springframework.context.annotation.Import; /** @@ -44,10 +45,12 @@ * @author Jonatan Ivanov * @author Moritz Halbritter * @author Eddú Meléndez + * @author Yanming Zhou * @since 4.0.0 */ @AutoConfiguration @ConditionalOnClass({ OtelTracer.class, SdkTracerProvider.class, OpenTelemetry.class, OtlpHttpSpanExporter.class }) +@ConditionalOnEnabledTracing("otlp") @EnableConfigurationProperties(OtlpTracingProperties.class) @Import({ OtlpTracingConfigurations.ConnectionDetails.class, OtlpTracingConfigurations.Exporters.class }) public class OtlpTracingAutoConfiguration { diff --git a/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingConfigurations.java b/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingConfigurations.java index 130f5b639372..a63ba9016f99 100644 --- a/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingConfigurations.java +++ b/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingConfigurations.java @@ -28,7 +28,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.tracing.autoconfigure.ConditionalOnEnabledTracing; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.Assert; @@ -38,6 +37,7 @@ * * @author Moritz Halbritter * @author Eddú Meléndez + * @author Yanming Zhou */ final class OtlpTracingConfigurations { @@ -77,7 +77,6 @@ public String getUrl(Transport transport) { @Configuration(proxyBeanMethods = false) @ConditionalOnMissingBean({ OtlpGrpcSpanExporter.class, OtlpHttpSpanExporter.class }) @ConditionalOnBean(OtlpTracingConnectionDetails.class) - @ConditionalOnEnabledTracing("otlp") static class Exporters { @Bean diff --git a/spring-boot-project/spring-boot-tracing/src/test/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingAutoConfigurationTests.java b/spring-boot-project/spring-boot-tracing/src/test/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingAutoConfigurationTests.java index 05e7cdb6f5e9..6332c3ed4e1a 100644 --- a/spring-boot-project/spring-boot-tracing/src/test/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-tracing/src/test/java/org/springframework/boot/tracing/autoconfigure/otlp/OtlpTracingAutoConfigurationTests.java @@ -44,6 +44,7 @@ * @author Jonatan Ivanov * @author Moritz Halbritter * @author Eddú Meléndez + * @author Yanming Zhou */ class OtlpTracingAutoConfigurationTests { @@ -71,6 +72,15 @@ void shouldSupplyBeans() { .hasSingleBean(SpanExporter.class)); } + @Test + void shouldNotSupplyBeansIfTracingDisabled() { + this.tracingDisabledContextRunner + .withPropertyValues("management.otlp.tracing.endpoint=http://localhost:4318/v1/traces") + .run((context) -> assertThat(context).doesNotHaveBean(OtlpTracingProperties.class) + .doesNotHaveBean(OtlpTracingConnectionDetails.class) + .doesNotHaveBean(SpanExporter.class)); + } + @Test void shouldCustomizeHttpTransportWithProperties() { this.contextRunner