+
@Configuration
+@EnableAutoConfiguration
+static class Config {
+ @Autowired Tracer tracer;
+ @Autowired HttpTraceKeysInjector httpTraceKeysInjector;
+ @Autowired HttpSpanInjector spanInjector;
+
+ @Bean(name = "customAsyncRestTemplate")
+ public AsyncRestTemplate traceAsyncRestTemplate(@Qualifier("customHttpRequestFactoryWrapper")
+ TraceAsyncClientHttpRequestFactoryWrapper wrapper) {
+ return new TraceAsyncRestTemplate(wrapper, this.tracer);
+ }
+
+ @Bean(name = "customHttpRequestFactoryWrapper")
+ public TraceAsyncClientHttpRequestFactoryWrapper traceAsyncClientHttpRequestFactory() {
+ return new TraceAsyncClientHttpRequestFactoryWrapper(this.tracer,
+ this.spanInjector,
+ asyncClientFactory(),
+ clientHttpRequestFactory(),
+ this.httpTraceKeysInjector);
+ }
+
+ private ClientHttpRequestFactory clientHttpRequestFactory() {
+ ClientHttpRequestFactory clientHttpRequestFactory = new CustomClientHttpRequestFactory();
+ //CUSTOMIZE HERE
+ return clientHttpRequestFactory;
+ }
+
+ private AsyncClientHttpRequestFactory asyncClientFactory() {
+ AsyncClientHttpRequestFactory factory = new CustomAsyncClientHttpRequestFactory();
+ //CUSTOMIZE HERE
+ return factory;
+ }
+}
+