增加对httpclient、okhttpclient、rabbittemplate的依赖判断

parent e9b87212
...@@ -46,17 +46,20 @@ ...@@ -46,17 +46,20 @@
<dependency> <dependency>
<groupId>org.apache.httpcomponents</groupId> <groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId> <artifactId>httpclient</artifactId>
<optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.squareup.okhttp3</groupId> <groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId> <artifactId>okhttp</artifactId>
<version>3.10.0</version> <version>3.10.0</version>
<optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.amqp</groupId> <groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId> <artifactId>spring-rabbit</artifactId>
<optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -18,9 +18,12 @@ import cn.quantgroup.tech.brave.service.TechRabbitBuilderTrace; ...@@ -18,9 +18,12 @@ import cn.quantgroup.tech.brave.service.TechRabbitBuilderTrace;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import okhttp3.Dispatcher; import okhttp3.Dispatcher;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureOrder; import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -54,7 +57,7 @@ import java.util.List; ...@@ -54,7 +57,7 @@ import java.util.List;
@Slf4j @Slf4j
@Configuration @Configuration
@AutoConfigureOrder @AutoConfigureOrder
@Conditional(BraveAutoConfiguration.BraveSet.class) @Conditional( BraveAutoConfiguration.BraveSet.class )
public class BraveAutoConfiguration { public class BraveAutoConfiguration {
static final class BraveSet implements Condition { static final class BraveSet implements Condition {
@Override @Override
...@@ -71,6 +74,23 @@ public class BraveAutoConfiguration { ...@@ -71,6 +74,23 @@ public class BraveAutoConfiguration {
@EnableConfigurationProperties( BraveProperties.class ) @EnableConfigurationProperties( BraveProperties.class )
@ConditionalOnProperty( prefix = "tech.brave", name = "enabled", havingValue = "false" ) @ConditionalOnProperty( prefix = "tech.brave", name = "enabled", havingValue = "false" )
public static class BraveUntEnabled { public static class BraveUntEnabled {
@Configuration
@ConditionalOnClass( RabbitTemplate.class )
public static class RabbitTemplateEnable {
/**
* 提供RabbitTemplateBuilder,业务系统需要使用该Builder生成RabbitTemplate
*
* @return
*/
@Bean( name = "techRabbitTemplateBuilder" )
public ITechRabbitBuilder rabbitTemplateBuilder() {
return new TechRabbitBuilderNoTrace();
}
}
@Configuration
@ConditionalOnClass( HttpClient.class )
public static class HttpClientEnable {
/** /**
* 提供HttpClientBuilderBean * 提供HttpClientBuilderBean
* *
...@@ -81,6 +101,11 @@ public class BraveAutoConfiguration { ...@@ -81,6 +101,11 @@ public class BraveAutoConfiguration {
log.info("注册HttpClientBuilder"); log.info("注册HttpClientBuilder");
return TracingHttpClientBuilder.create(); return TracingHttpClientBuilder.create();
} }
}
@Configuration
@ConditionalOnClass( OkHttpClient.class )
public static class OkHttpClientEnable {
/** /**
* 提供OkHttpClientBean * 提供OkHttpClientBean
...@@ -92,7 +117,11 @@ public class BraveAutoConfiguration { ...@@ -92,7 +117,11 @@ public class BraveAutoConfiguration {
log.info("注册OkHttpClient.Builder"); log.info("注册OkHttpClient.Builder");
return new OkHttpClient.Builder(); return new OkHttpClient.Builder();
} }
}
@Configuration
@ConditionalOnClass( RestTemplate.class )
public static class RestTemplateEnable {
/** /**
* 提供RestTemplate * 提供RestTemplate
* *
...@@ -103,23 +132,15 @@ public class BraveAutoConfiguration { ...@@ -103,23 +132,15 @@ public class BraveAutoConfiguration {
log.info("添加restTemplate拦截器"); log.info("添加restTemplate拦截器");
return new RestTemplate(); return new RestTemplate();
} }
/**
* 提供RabbitTemplateBuilder,业务系统需要使用该Builder生成RabbitTemplate
*
* @return
*/
@Bean( name = "techRabbitTemplateBuilder" )
public ITechRabbitBuilder rabbitTemplateBuilder() {
return new TechRabbitBuilderNoTrace();
} }
} }
@Configuration @Configuration
@EnableWebMvc @EnableWebMvc
@EnableConfigurationProperties( {BraveProperties.class, ServiceProperties.class} ) @EnableConfigurationProperties( {BraveProperties.class, ServiceProperties.class} )
@ConditionalOnProperty( prefix = "tech.brave", name = "enabled", havingValue = "true" ) @ConditionalOnProperty( prefix = "tech.brave", name = "enabled", havingValue = "true" )
@Import( {TracingClientHttpRequestInterceptor.class, SpanCustomizingAsyncHandlerInterceptor.class} ) @Import( SpanCustomizingAsyncHandlerInterceptor.class )
public static class BraveEnabled extends WebMvcConfigurerAdapter { public static class BraveEnabled extends WebMvcConfigurerAdapter {
@Autowired @Autowired
private BraveProperties braveProperties; private BraveProperties braveProperties;
...@@ -127,9 +148,6 @@ public class BraveAutoConfiguration { ...@@ -127,9 +148,6 @@ public class BraveAutoConfiguration {
@Autowired @Autowired
private ServiceProperties serviceProperties; private ServiceProperties serviceProperties;
@Autowired
private TracingClientHttpRequestInterceptor clientInterceptor;
@Autowired @Autowired
private SpanCustomizingAsyncHandlerInterceptor spanCustomizingAsyncHandlerInterceptor; private SpanCustomizingAsyncHandlerInterceptor spanCustomizingAsyncHandlerInterceptor;
...@@ -159,7 +177,26 @@ public class BraveAutoConfiguration { ...@@ -159,7 +177,26 @@ public class BraveAutoConfiguration {
return HttpTracing.create(tracing); return HttpTracing.create(tracing);
} }
/**
* 创建一个bean
*
* @return
*/
@Bean( name = "techDelegatingTracingFilter" )
public Filter delegatingTracingFilter() {
log.info("注册DelegatingTracingFilter");
return new DelegatingTracingFilter();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
log.info("添加braveWebmvc拦截器");
registry.addInterceptor(spanCustomizingAsyncHandlerInterceptor);
}
@Configuration
@ConditionalOnClass( RabbitTemplate.class )
public static class RabbitTemplateEnable {
/** /**
* 提供RabbitTemplateBuilder,业务系统需要使用该Builder生成RabbitTemplate * 提供RabbitTemplateBuilder,业务系统需要使用该Builder生成RabbitTemplate
* *
...@@ -170,7 +207,11 @@ public class BraveAutoConfiguration { ...@@ -170,7 +207,11 @@ public class BraveAutoConfiguration {
public ITechRabbitBuilder rabbitTemplateBuilder(Tracing tracing) { public ITechRabbitBuilder rabbitTemplateBuilder(Tracing tracing) {
return new TechRabbitBuilderTrace(tracing); return new TechRabbitBuilderTrace(tracing);
} }
}
@Configuration
@ConditionalOnClass( HttpClient.class )
public static class HttpClientEnable {
/** /**
* 提供HttpClientBuilderBean * 提供HttpClientBuilderBean
* *
...@@ -182,7 +223,11 @@ public class BraveAutoConfiguration { ...@@ -182,7 +223,11 @@ public class BraveAutoConfiguration {
log.info("注册braveHttpClientBuilder"); log.info("注册braveHttpClientBuilder");
return TracingHttpClientBuilder.create(tracing); return TracingHttpClientBuilder.create(tracing);
} }
}
@Configuration
@ConditionalOnClass( OkHttpClient.class )
public static class OkHttpClientEnable {
/** /**
* 提供OkHttpClientBean * 提供OkHttpClientBean
* *
...@@ -196,18 +241,16 @@ public class BraveAutoConfiguration { ...@@ -196,18 +241,16 @@ public class BraveAutoConfiguration {
.dispatcher(new Dispatcher(httpTracing.tracing().currentTraceContext().executorService(new Dispatcher().executorService()))) .dispatcher(new Dispatcher(httpTracing.tracing().currentTraceContext().executorService(new Dispatcher().executorService())))
.addNetworkInterceptor(TracingInterceptor.create(httpTracing)); .addNetworkInterceptor(TracingInterceptor.create(httpTracing));
} }
/**
* 创建一个bean
*
* @return
*/
@Bean( name = "techDelegatingTracingFilter" )
public Filter delegatingTracingFilter() {
log.info("注册DelegatingTracingFilter");
return new DelegatingTracingFilter();
} }
@Configuration
@ConditionalOnClass( RestTemplate.class )
@Import( TracingClientHttpRequestInterceptor.class )
public static class RestTemplateEnable {
@Autowired
private TracingClientHttpRequestInterceptor clientInterceptor;
/** /**
* 提供RestTemplate * 提供RestTemplate
* *
...@@ -223,12 +266,8 @@ public class BraveAutoConfiguration { ...@@ -223,12 +266,8 @@ public class BraveAutoConfiguration {
restTemplate.setInterceptors(interceptors); restTemplate.setInterceptors(interceptors);
return restTemplate; return restTemplate;
} }
@Override
public void addInterceptors(InterceptorRegistry registry) {
log.info("添加braveWebmvc拦截器");
registry.addInterceptor(spanCustomizingAsyncHandlerInterceptor);
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment