Added an example with custom rest template builder
This commit is contained in:
@@ -81,12 +81,7 @@ public class TraceWebClientAutoConfiguration {
|
||||
@Bean
|
||||
@Order
|
||||
RestTemplateCustomizer traceRestTemplateCustomizer() {
|
||||
return new RestTemplateCustomizer() {
|
||||
@Override public void customize(RestTemplate restTemplate) {
|
||||
new RestTemplateInterceptorInjector(TraceInterceptorConfiguration.this.traceRestTemplateInterceptor)
|
||||
.inject(restTemplate);
|
||||
}
|
||||
};
|
||||
return new TraceRestTemplateCustomizer(this.traceRestTemplateInterceptor);
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
@@ -174,6 +169,20 @@ class RestTemplateInterceptorInjector {
|
||||
}
|
||||
}
|
||||
|
||||
class TraceRestTemplateCustomizer implements RestTemplateCustomizer {
|
||||
|
||||
private final TraceRestTemplateInterceptor interceptor;
|
||||
|
||||
TraceRestTemplateCustomizer(TraceRestTemplateInterceptor interceptor) {
|
||||
this.interceptor = interceptor;
|
||||
}
|
||||
|
||||
@Override public void customize(RestTemplate restTemplate) {
|
||||
new RestTemplateInterceptorInjector(this.interceptor)
|
||||
.inject(restTemplate);
|
||||
}
|
||||
}
|
||||
|
||||
class TraceUserInfoRestTemplateCustomizer implements UserInfoRestTemplateCustomizer {
|
||||
|
||||
private final BeanFactory beanFactory;
|
||||
|
||||
@@ -18,7 +18,6 @@ package org.springframework.cloud.sleuth.instrument.web.client;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
@@ -49,11 +48,13 @@ public class TraceWebClientAutoConfigurationTests {
|
||||
|
||||
@Autowired @Qualifier("firstRestTemplate") RestTemplate restTemplate;
|
||||
@Autowired @Qualifier("secondRestTemplate") RestTemplate secondRestTemplate;
|
||||
@Autowired RestTemplateBuilder builder;
|
||||
|
||||
@Test
|
||||
public void should_add_rest_template_interceptors() {
|
||||
assertInterceptorsOrder(assertInterceptorsNotEmpty(this.restTemplate));
|
||||
assertInterceptorsOrder(assertInterceptorsNotEmpty(this.restTemplate));
|
||||
assertInterceptorsOrder(assertInterceptorsNotEmpty(this.secondRestTemplate));
|
||||
assertInterceptorsOrder(assertInterceptorsNotEmpty(this.builder.build()));
|
||||
}
|
||||
|
||||
private List<ClientHttpRequestInterceptor> assertInterceptorsNotEmpty(RestTemplate restTemplate) {
|
||||
@@ -88,14 +89,23 @@ public class TraceWebClientAutoConfigurationTests {
|
||||
@EnableAutoConfiguration
|
||||
static class Config {
|
||||
|
||||
// custom builder
|
||||
@Bean
|
||||
RestTemplateBuilder myRestTemplateBuilder(List<RestTemplateCustomizer> customizers) {
|
||||
return new RestTemplateBuilder()
|
||||
.additionalCustomizers(customizers)
|
||||
.additionalInterceptors(new MyClientHttpRequestInterceptor());
|
||||
}
|
||||
|
||||
// rest template from builder
|
||||
@Bean
|
||||
@Qualifier("firstRestTemplate")
|
||||
RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
|
||||
return restTemplateBuilder
|
||||
.additionalInterceptors(new MyClientHttpRequestInterceptor())
|
||||
.build();
|
||||
}
|
||||
|
||||
// manual rest template
|
||||
@Bean
|
||||
@Qualifier("secondRestTemplate")
|
||||
RestTemplate secondRestTemplate() {
|
||||
@@ -106,6 +116,7 @@ public class TraceWebClientAutoConfigurationTests {
|
||||
return restTemplate;
|
||||
}
|
||||
|
||||
// custom customizer
|
||||
@Bean
|
||||
RestTemplateCustomizer myRestTemplateCustomizer() {
|
||||
return restTemplate -> {
|
||||
|
||||
Reference in New Issue
Block a user