diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinRestTemplateSenderConfiguration.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinRestTemplateSenderConfiguration.java index 6cb257029..a8cfe6bbc 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinRestTemplateSenderConfiguration.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin2/sender/ZipkinRestTemplateSenderConfiguration.java @@ -59,32 +59,40 @@ class ZipkinRestTemplateSenderConfiguration { @Configuration @ConditionalOnMissingClass("org.springframework.cloud.client.loadbalancer.LoadBalancerClient") - @ConditionalOnProperty(value = "spring.zipkin.discoveryClientEnabled", havingValue = "false") static class DefaultZipkinUrlExtractorConfiguration { @Autowired(required = false) LoadBalancerClient client; @Bean @ConditionalOnMissingBean ZipkinLoadBalancer noOpLoadBalancer(final ZipkinProperties zipkinProperties) { - return new ZipkinLoadBalancer() { - @Override public URI instance() { - return URI.create(zipkinProperties.getBaseUrl()); - } - }; + return new NoOpZipkinLoadBalancer(zipkinProperties); } } @Configuration @ConditionalOnClass(LoadBalancerClient.class) - @ConditionalOnProperty(value = "spring.zipkin.discoveryClientEnabled", havingValue = "true", matchIfMissing = true) static class DiscoveryClientZipkinUrlExtractorConfiguration { - @Autowired(required = false) LoadBalancerClient client; + @Configuration + @ConditionalOnProperty(value = "spring.zipkin.discoveryClientEnabled", havingValue = "true", matchIfMissing = true) + static class ZipkinClientLoadBalancedConfiguration { + @Autowired(required = false) LoadBalancerClient client; - @Bean - @ConditionalOnMissingBean - ZipkinLoadBalancer loadBalancerClientZipkinLoadBalancer(ZipkinProperties zipkinProperties) { - return new LoadBalancerClientZipkinLoadBalancer(this.client, zipkinProperties); + @Bean + @ConditionalOnMissingBean + ZipkinLoadBalancer loadBalancerClientZipkinLoadBalancer(ZipkinProperties zipkinProperties) { + return new LoadBalancerClientZipkinLoadBalancer(this.client, zipkinProperties); + } + } + + @Configuration + @ConditionalOnProperty(value = "spring.zipkin.discoveryClientEnabled", havingValue = "false") + static class ZipkinClientNoOpConfiguration { + @Bean + @ConditionalOnMissingBean + ZipkinLoadBalancer noOpLoadBalancer(final ZipkinProperties zipkinProperties) { + return new NoOpZipkinLoadBalancer(zipkinProperties); + } } } @@ -149,3 +157,16 @@ class ZipkinRestTemplateWrapper extends RestTemplate { interface ZipkinUrlExtractor { URI zipkinUrl(ZipkinProperties zipkinProperties); } + +class NoOpZipkinLoadBalancer implements ZipkinLoadBalancer { + + private final ZipkinProperties zipkinProperties; + + NoOpZipkinLoadBalancer(ZipkinProperties zipkinProperties) { + this.zipkinProperties = zipkinProperties; + } + + @Override public URI instance() { + return URI.create(this.zipkinProperties.getBaseUrl()); + } +} \ No newline at end of file