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.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки