From 73db54c82b9e86b4c9e9a7c82d0ab3d6a4f3db61 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 19 Jun 2025 14:04:44 +0100 Subject: [PATCH] Make BytesEncoder back off without an Encoding bean Closes gh-46153 --- .../zipkin/ZipkinTracingAutoConfiguration.java | 1 + ...kinConfigurationsOpenTelemetryConfigurationTests.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/zipkin/ZipkinTracingAutoConfiguration.java b/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/zipkin/ZipkinTracingAutoConfiguration.java index 2cbd4d38e63..64fb16e0e02 100644 --- a/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/zipkin/ZipkinTracingAutoConfiguration.java +++ b/spring-boot-project/spring-boot-tracing/src/main/java/org/springframework/boot/tracing/autoconfigure/zipkin/ZipkinTracingAutoConfiguration.java @@ -83,6 +83,7 @@ public class ZipkinTracingAutoConfiguration { static class OpenTelemetryConfiguration { @Bean + @ConditionalOnBean(Encoding.class) @ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class) BytesEncoder spanBytesEncoder(Encoding encoding) { return SpanBytesEncoder.forEncoding(encoding); diff --git a/spring-boot-project/spring-boot-tracing/src/test/java/org/springframework/boot/tracing/autoconfigure/zipkin/ZipkinConfigurationsOpenTelemetryConfigurationTests.java b/spring-boot-project/spring-boot-tracing/src/test/java/org/springframework/boot/tracing/autoconfigure/zipkin/ZipkinConfigurationsOpenTelemetryConfigurationTests.java index ee30bbdb62b..c90698e3a0a 100644 --- a/spring-boot-project/spring-boot-tracing/src/test/java/org/springframework/boot/tracing/autoconfigure/zipkin/ZipkinConfigurationsOpenTelemetryConfigurationTests.java +++ b/spring-boot-project/spring-boot-tracing/src/test/java/org/springframework/boot/tracing/autoconfigure/zipkin/ZipkinConfigurationsOpenTelemetryConfigurationTests.java @@ -42,6 +42,15 @@ class ZipkinConfigurationsOpenTelemetryConfigurationTests { private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(DefaultEncodingConfiguration.class, OpenTelemetryConfiguration.class)); + @Test + void backsOffWithoutEncoding() { + new ApplicationContextRunner().withUserConfiguration(OpenTelemetryConfiguration.class).run((context) -> { + assertThat(context).hasNotFailed(); + assertThat(context).doesNotHaveBean(ZipkinSpanExporter.class); + assertThat(context).doesNotHaveBean(BytesEncoder.class); + }); + } + @Test void shouldSupplyBeans() { this.contextRunner.withUserConfiguration(SenderConfiguration.class, CustomEncoderConfiguration.class)