Автор оригинала: Adrian Precub.
1. введение
В этом кратком руководстве мы рассмотрим как настроить Spring RestTemplate bean.
Давайте начнем с обсуждения трех основных типов конфигурации:
- использование шаблона по умолчанию Rest TemplateBuilder
- использование настройщика шаблонов Rest
- создание собственного Rest TemplateBuilder
Чтобы легко проверить это, пожалуйста, следуйте руководству по настройке простого приложения Spring Boot .
2. Настройка с использованием шаблона Rest по умолчанию
Чтобы настроить RestTemplate таким образом, нам нужно ввести в наши классы шаблон Rest TemplateBuilder bean по умолчанию, предоставляемый Spring Boot :
private RestTemplate restTemplate;
@Autowired
public HelloController(RestTemplateBuilder builder) {
this.restTemplate = builder.build();
}Компонент RestTemplate , созданный с помощью этого метода, имеет область действия , ограниченную классом, в котором мы его создаем .
3. Настройка с помощью RestTemplateCustomizer
С помощью этого подхода мы можем создать аддитивную настройку для всего приложения.
Это несколько более сложный подход. Для этого нам нужно создать класс, реализующий Настройщик шаблонов Rest, и определить его как компонент:
public class CustomRestTemplateCustomizer implements RestTemplateCustomizer {
@Override
public void customize(RestTemplate restTemplate) {
restTemplate.getInterceptors().add(new CustomClientHttpRequestInterceptor());
}
}Пользовательский клиент HttpRequestInterceptor перехватчик выполняет базовое протоколирование запроса:
public class CustomClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {
private static Logger LOGGER = LoggerFactory
.getLogger(CustomClientHttpRequestInterceptor.class);
@Override
public ClientHttpResponse intercept(
HttpRequest request, byte[] body,
ClientHttpRequestExecution execution) throws IOException {
logRequestDetails(request);
return execution.execute(request, body);
}
private void logRequestDetails(HttpRequest request) {
LOGGER.info("Headers: {}", request.getHeaders());
LOGGER.info("Request Method: {}", request.getMethod());
LOGGER.info("Request URI: {}", request.getURI());
}
}Теперь мы определяем Custom Test Template Customizer как компонент в классе конфигурации или в нашем классе приложений Spring Boot:
@Bean
public CustomRestTemplateCustomizer customRestTemplateCustomizer() {
return new CustomRestTemplateCustomizer();
}При такой конфигурации каждая RestTemplate , которую мы будем использовать в нашем приложении, будет иметь настраиваемый перехватчик.
4. Настройка путем создания нашего собственного шаблона Rest
Это самый экстремальный подход к настройке RestTemplate. Он отключает автоматическую настройку по умолчанию Rest TemplateBuilder , поэтому нам нужно определить его самостоятельно:
@Bean
@DependsOn(value = {"customRestTemplateCustomizer"})
public RestTemplateBuilder restTemplateBuilder() {
return new RestTemplateBuilder(customRestTemplateCustomizer());
}После этого мы можем внедрить пользовательский конструктор в наши классы, как мы сделали бы с шаблоном по умолчанию Rest и создать RestTemplate как обычно:
private RestTemplate restTemplate;
@Autowired
public HelloController(RestTemplateBuilder builder) {
this.restTemplate = builder.build();
}5. Заключение
Мы видели , как настроить RestTemplate с помощью шаблона по умолчанию Rest , создав наш собственный RestTemplateBuilder или используя RestTemplateCustomizer bean .
Как всегда, полную кодовую базу для этого примера можно найти в нашем репозитории GitHub .