Рубрики
Без рубрики

Настройка RestTemplate с помощью построителя RestTemplate

Изучите три различных подхода к настройке компонента RestTemplate весной.

Автор оригинала: 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 .