mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-05-03 03:43:54 +01:00
Auto-configure span customizer beans
Closes gh-33087
This commit is contained in:
+15
@@ -19,6 +19,8 @@ package org.springframework.boot.actuate.autoconfigure.tracing;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import brave.CurrentSpanCustomizer;
|
||||
import brave.SpanCustomizer;
|
||||
import brave.Tracer;
|
||||
import brave.Tracing;
|
||||
import brave.Tracing.Builder;
|
||||
@@ -52,6 +54,7 @@ import io.micrometer.tracing.brave.bridge.BraveCurrentTraceContext;
|
||||
import io.micrometer.tracing.brave.bridge.BraveHttpClientHandler;
|
||||
import io.micrometer.tracing.brave.bridge.BraveHttpServerHandler;
|
||||
import io.micrometer.tracing.brave.bridge.BravePropagator;
|
||||
import io.micrometer.tracing.brave.bridge.BraveSpanCustomizer;
|
||||
import io.micrometer.tracing.brave.bridge.BraveTracer;
|
||||
import io.micrometer.tracing.brave.bridge.CompositeSpanHandler;
|
||||
import io.micrometer.tracing.brave.bridge.W3CPropagation;
|
||||
@@ -185,6 +188,18 @@ public class BraveAutoConfiguration {
|
||||
return new BraveHttpClientHandler(httpClientHandler);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(SpanCustomizer.class)
|
||||
CurrentSpanCustomizer currentSpanCustomizer(Tracing tracing) {
|
||||
return CurrentSpanCustomizer.create(tracing);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(io.micrometer.tracing.SpanCustomizer.class)
|
||||
BraveSpanCustomizer braveSpanCustomizer(SpanCustomizer spanCustomizer) {
|
||||
return new BraveSpanCustomizer(spanCustomizer);
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnProperty(value = "management.tracing.baggage.enabled", havingValue = "false")
|
||||
static class BraveNoBaggageConfiguration {
|
||||
|
||||
+8
@@ -21,6 +21,7 @@ import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import io.micrometer.tracing.SamplerFunction;
|
||||
import io.micrometer.tracing.SpanCustomizer;
|
||||
import io.micrometer.tracing.otel.bridge.DefaultHttpClientAttributesGetter;
|
||||
import io.micrometer.tracing.otel.bridge.DefaultHttpServerAttributesExtractor;
|
||||
import io.micrometer.tracing.otel.bridge.EventListener;
|
||||
@@ -30,6 +31,7 @@ import io.micrometer.tracing.otel.bridge.OtelCurrentTraceContext;
|
||||
import io.micrometer.tracing.otel.bridge.OtelHttpClientHandler;
|
||||
import io.micrometer.tracing.otel.bridge.OtelHttpServerHandler;
|
||||
import io.micrometer.tracing.otel.bridge.OtelPropagator;
|
||||
import io.micrometer.tracing.otel.bridge.OtelSpanCustomizer;
|
||||
import io.micrometer.tracing.otel.bridge.OtelTracer;
|
||||
import io.micrometer.tracing.otel.bridge.OtelTracer.EventPublisher;
|
||||
import io.micrometer.tracing.otel.bridge.Slf4JBaggageEventListener;
|
||||
@@ -182,6 +184,12 @@ public class OpenTelemetryAutoConfiguration {
|
||||
return new Slf4JEventListener();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(SpanCustomizer.class)
|
||||
OtelSpanCustomizer otelSpanCustomizer() {
|
||||
return new OtelSpanCustomizer();
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnProperty(prefix = "management.tracing.baggage", name = "enabled", matchIfMissing = true)
|
||||
static class BaggageConfiguration {
|
||||
|
||||
+18
@@ -19,6 +19,7 @@ package org.springframework.boot.actuate.autoconfigure.tracing;
|
||||
import java.util.Collections;
|
||||
|
||||
import brave.Span;
|
||||
import brave.SpanCustomizer;
|
||||
import brave.Tracer;
|
||||
import brave.Tracing;
|
||||
import brave.baggage.BaggagePropagation;
|
||||
@@ -39,6 +40,7 @@ import brave.sampler.Sampler;
|
||||
import io.micrometer.tracing.brave.bridge.BraveBaggageManager;
|
||||
import io.micrometer.tracing.brave.bridge.BraveHttpClientHandler;
|
||||
import io.micrometer.tracing.brave.bridge.BraveHttpServerHandler;
|
||||
import io.micrometer.tracing.brave.bridge.BraveSpanCustomizer;
|
||||
import io.micrometer.tracing.brave.bridge.BraveTracer;
|
||||
import io.micrometer.tracing.brave.bridge.CompositeSpanHandler;
|
||||
import io.micrometer.tracing.brave.bridge.W3CPropagation;
|
||||
@@ -91,6 +93,8 @@ class BraveAutoConfigurationTests {
|
||||
assertThat(context).hasSingleBean(BraveHttpServerHandler.class);
|
||||
assertThat(context).hasSingleBean(BraveHttpClientHandler.class);
|
||||
assertThat(context).hasSingleBean(CompositeSpanHandler.class);
|
||||
assertThat(context).hasSingleBean(SpanCustomizer.class);
|
||||
assertThat(context).hasSingleBean(BraveSpanCustomizer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -127,6 +131,10 @@ class BraveAutoConfigurationTests {
|
||||
assertThat(context).hasSingleBean(HttpClientHandler.class);
|
||||
assertThat(context).hasBean("customCompositeSpanHandler");
|
||||
assertThat(context).hasSingleBean(CompositeSpanHandler.class);
|
||||
assertThat(context).hasBean("customSpanCustomizer");
|
||||
assertThat(context).hasSingleBean(SpanCustomizer.class);
|
||||
assertThat(context).hasBean("customMicrometerSpanCustomizer");
|
||||
assertThat(context).hasSingleBean(io.micrometer.tracing.SpanCustomizer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -421,6 +429,16 @@ class BraveAutoConfigurationTests {
|
||||
return new CompositeSpanHandler(Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
|
||||
}
|
||||
|
||||
@Bean
|
||||
SpanCustomizer customSpanCustomizer() {
|
||||
return mock(SpanCustomizer.class);
|
||||
}
|
||||
|
||||
@Bean
|
||||
io.micrometer.tracing.SpanCustomizer customMicrometerSpanCustomizer() {
|
||||
return mock(io.micrometer.tracing.SpanCustomizer.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+11
@@ -19,10 +19,12 @@ package org.springframework.boot.actuate.autoconfigure.tracing;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import io.micrometer.tracing.SpanCustomizer;
|
||||
import io.micrometer.tracing.otel.bridge.OtelCurrentTraceContext;
|
||||
import io.micrometer.tracing.otel.bridge.OtelHttpClientHandler;
|
||||
import io.micrometer.tracing.otel.bridge.OtelHttpServerHandler;
|
||||
import io.micrometer.tracing.otel.bridge.OtelPropagator;
|
||||
import io.micrometer.tracing.otel.bridge.OtelSpanCustomizer;
|
||||
import io.micrometer.tracing.otel.bridge.OtelTracer;
|
||||
import io.micrometer.tracing.otel.bridge.OtelTracer.EventPublisher;
|
||||
import io.micrometer.tracing.otel.bridge.Slf4JBaggageEventListener;
|
||||
@@ -78,6 +80,7 @@ class OpenTelemetryAutoConfigurationTests {
|
||||
assertThat(context).hasSingleBean(SpanProcessor.class);
|
||||
assertThat(context).hasSingleBean(OtelPropagator.class);
|
||||
assertThat(context).hasSingleBean(TextMapPropagator.class);
|
||||
assertThat(context).hasSingleBean(OtelSpanCustomizer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -100,6 +103,7 @@ class OpenTelemetryAutoConfigurationTests {
|
||||
assertThat(context).doesNotHaveBean(SpanProcessor.class);
|
||||
assertThat(context).doesNotHaveBean(OtelPropagator.class);
|
||||
assertThat(context).doesNotHaveBean(TextMapPropagator.class);
|
||||
assertThat(context).doesNotHaveBean(OtelSpanCustomizer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -132,6 +136,8 @@ class OpenTelemetryAutoConfigurationTests {
|
||||
assertThat(context).hasSingleBean(Slf4JBaggageEventListener.class);
|
||||
assertThat(context).hasBean("customOtelPropagator");
|
||||
assertThat(context).hasSingleBean(OtelPropagator.class);
|
||||
assertThat(context).hasBean("customSpanCustomizer");
|
||||
assertThat(context).hasSingleBean(SpanCustomizer.class);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -275,6 +281,11 @@ class OpenTelemetryAutoConfigurationTests {
|
||||
return mock(TextMapPropagator.class);
|
||||
}
|
||||
|
||||
@Bean
|
||||
SpanCustomizer customSpanCustomizer() {
|
||||
return mock(SpanCustomizer.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user