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