Spring Boot: настройка RestTemplate
Существует три основных подхода к настройке RestTemplate, в зависимости от того, насколько широко вы хотите применить настройки.
Чтобы сделать область возможных настроек как можно более узкой, добавьте автоматически настроенный RestTemplateBuilder и затем вызовите его методы, как требуется. Каждый вызов метода возвращает новый экземпляр RestTemplateBuilder, поэтому настройки влияют только на использование компоновщика (builder'а).
Чтобы сделать аддитивную настройку всего приложения, используйте bean-компонент RestTemplateCustomizer. Все такие bean-компоненты автоматически регистрируются в автоматически настроенном RestTemplateBuilder и применяются ко всем шаблонам, созданным с его помощью.
В следующем примере показан настройщик, который настраивает использование прокси для всех хостов, кроме 192.168.0.5:
static class ProxyCustomizer implements RestTemplateCustomizer {
@Override
public void customize(RestTemplate restTemplate) {
HttpHost proxy = new HttpHost("proxy.example.com");
HttpClient httpClient = HttpClientBuilder.create().setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {
@Override
public HttpHost determineProxy(HttpHost target, HttpRequest request, HttpContext context)
throws HttpException {
if (target.getHostName().equals("192.168.0.5")) {
return null;
}
return super.determineProxy(target, request, context);
}
}).build();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
}
}
Наконец, самый экстремальный (и редко используемый) вариант - создать свой собственный компонент RestTemplateBuilder. Это отключает автоматическую настройку RestTemplateBuilder и предотвращает использование любых bean-компонентов RestTemplateCustomizer.
Читайте также:
- Spring Boot: вызов REST сервисов с помощью RestTemplate
- Spring Boot: обмен сообщениями, Apache Kafka
- Spring Boot: обмен сообщениями, AMQP, поддержка RabbitMQ
Комментарии
Отправить комментарий