From 42e8f65b80f82f543c53bb25802a6ff6b4c9c595 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Mon, 13 Jun 2022 13:41:58 +0200 Subject: [PATCH] Move @ConditionalOnClass from methods to inner classes Closes gh-31353 --- .../tracing/zipkin/ZipkinConfigurations.java | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurations.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurations.java index 2d1617eefb4..d5ba8c1db29 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurations.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurations.java @@ -28,11 +28,11 @@ import zipkin2.reporter.urlconnection.URLConnectionSender; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.web.client.RestTemplate; /** @@ -43,23 +43,36 @@ import org.springframework.web.client.RestTemplate; class ZipkinConfigurations { @Configuration(proxyBeanMethods = false) - @EnableConfigurationProperties(ZipkinProperties.class) + @Import({ UrlConnectionSenderConfiguration.class, RestTemplateSenderConfiguration.class }) static class SenderConfiguration { + } + + @Configuration(proxyBeanMethods = false) + @ConditionalOnClass(URLConnectionSender.class) + @EnableConfigurationProperties(ZipkinProperties.class) + static class UrlConnectionSenderConfiguration { + @Bean - @ConditionalOnMissingBean - @ConditionalOnClass(URLConnectionSender.class) - Sender urlConnectionSender(ZipkinProperties properties) { + @ConditionalOnMissingBean(Sender.class) + URLConnectionSender urlConnectionSender(ZipkinProperties properties) { return URLConnectionSender.newBuilder().connectTimeout((int) properties.getConnectTimeout().getSeconds()) .readTimeout((int) properties.getReadTimeout().getSeconds()).endpoint(properties.getEndpoint()) .build(); } + } + + @Configuration(proxyBeanMethods = false) + @ConditionalOnClass(RestTemplate.class) + @EnableConfigurationProperties(ZipkinProperties.class) + static class RestTemplateSenderConfiguration { + @Bean - @ConditionalOnMissingBean + @ConditionalOnMissingBean(Sender.class) @ConditionalOnBean(RestTemplateBuilder.class) - @ConditionalOnMissingClass("zipkin2.reporter.urlconnection.URLConnectionSender") - Sender restTemplateSender(ZipkinProperties properties, RestTemplateBuilder restTemplateBuilder) { + ZipkinRestTemplateSender restTemplateSender(ZipkinProperties properties, + RestTemplateBuilder restTemplateBuilder) { RestTemplate restTemplate = restTemplateBuilder.setConnectTimeout(properties.getConnectTimeout()) .setReadTimeout(properties.getReadTimeout()).build(); return new ZipkinRestTemplateSender(properties.getEndpoint(), restTemplate); @@ -73,7 +86,7 @@ class ZipkinConfigurations { @Bean @ConditionalOnMissingBean @ConditionalOnBean(Sender.class) - Reporter spanReporter(Sender sender, BytesEncoder encoder) { + AsyncReporter spanReporter(Sender sender, BytesEncoder encoder) { return AsyncReporter.builder(sender).build(encoder); }