Make BytesEncoder back off without an Encoding bean

Issue: 46153
This commit is contained in:
Andy Wilkinson 2025-06-19 14:04:44 +01:00 committed by Phillip Webb
parent da03d91ce8
commit dd08a1b3d1
2 changed files with 10 additions and 0 deletions

View File

@ -83,6 +83,7 @@ public class ZipkinTracingAutoConfiguration {
static class OpenTelemetryConfiguration {
@Bean
@ConditionalOnBean(Encoding.class)
@ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class)
BytesEncoder<Span> spanBytesEncoder(Encoding encoding) {
return SpanBytesEncoder.forEncoding(encoding);

View File

@ -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)