diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java index 3c539a5de65..971b9d514ec 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java @@ -31,12 +31,13 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; /** * {@link EnableAutoConfiguration Auto-configuration} for Zipkin. - * + *
* It uses imports on {@link ZipkinConfigurations} to guarantee the correct configuration * ordering. * @@ -48,6 +49,7 @@ import org.springframework.context.annotation.Import; @Import({ SenderConfiguration.class, ReporterConfiguration.class, BraveConfiguration.class, OpenTelemetryConfiguration.class }) @ConditionalOnEnabledTracing +@EnableConfigurationProperties(ZipkinProperties.class) public class ZipkinAutoConfiguration { @Bean diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfigurationTests.java index e2ad6a0b550..c647bfbfe2a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfigurationTests.java @@ -41,7 +41,8 @@ class ZipkinAutoConfigurationTests { @Test void shouldSupplyBeans() { - this.contextRunner.run((context) -> assertThat(context).hasSingleBean(BytesEncoder.class)); + this.contextRunner.run((context) -> assertThat(context).hasSingleBean(BytesEncoder.class) + .hasSingleBean(PropertiesZipkinConnectionDetails.class)); } @Test @@ -83,6 +84,14 @@ class ZipkinAutoConfigurationTests { .doesNotHaveBean(PropertiesZipkinConnectionDetails.class)); } + @Test + void shouldWorkWithoutSenders() { + this.contextRunner + .withClassLoader(new FilteredClassLoader("zipkin2.reporter.urlconnection", "org.springframework.web.client", + "org.springframework.web.reactive.function.client")) + .run((context) -> assertThat(context).hasNotFailed()); + } + @Configuration(proxyBeanMethods = false) private static class CustomConfiguration {