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