Konfigurer en RestTemplate med RestTemplateBuilder

1. Introduktion

I denne hurtige vejledning skal vi se på hvordan man konfigurerer en fjeder RestTemplate bønne.

Lad os starte med at diskutere de tre hovedkonfigurationstyper:

  • ved hjælp af standard RestTemplateBuilder
  • ved hjælp af en RestTemplateCustomizer
  • skabe vores egne RestTemplateBuilder

For at være i stand til at teste dette let, skal du følge vejledningen om, hvordan du opretter en simpel Spring Boot-applikation.

2. Konfiguration ved hjælp af standard RestTemplateBuilder

For at konfigurere en RestTemplate på denne måde skal vi indsprøjt standard RestTemplateBuilder bønne leveret af Spring Boot ind i vores klasser:

private RestTemplate restTemplate; @Autowired offentlig HelloController (RestTemplateBuilder builder) {this.restTemplate = builder.build (); }

Det RestTemplate bønne oprettet med denne metode har sin omfang begrænset til den klasse, hvor vi bygger det.

3. Konfiguration ved hjælp af a RestTemplateCustomizer

Med denne tilgang kan vi oprette en applikationsdækkende, additiv tilpasning.

Dette er en lidt mere kompliceret tilgang. Til dette er vi nødt til oprette en klasse, der implementeres RestTemplateCustomizer,og definer det som en bønne:

offentlig klasse CustomRestTemplateCustomizer implementerer RestTemplateCustomizer {@Override public void customize (RestTemplate restTemplate) {restTemplate.getInterceptors (). add (new CustomClientHttpRequestInterceptor ()); }}

Det CustomClientHttpRequestInterceptor interceptor laver grundlæggende logføring af anmodningen:

offentlig klasse CustomClientHttpRequestInterceptor implementerer ClientHttpRequestInterceptor {privat statisk Logger LOGGER = LoggerFactory .getLogger (CustomClientHttpRequestInterceptor.class); @ Override offentlig ClientHttpResponse aflytning (HttpRequest anmodning, byte [] body, ClientHttpRequestExecution udførelse) kaster IOException {logRequestDetails (anmodning); return eksekvering. udfør (anmodning, organ); } private ugyldige logRequestDetails (HttpRequest anmodning) {LOGGER.info ("Overskrifter: {}", request.getHeaders ()); LOGGER.info ("Anmodningsmetode: {}", request.getMethod ()); LOGGER.info ("Request URI: {}", request.getURI ()); }}

Nu definerer vi CustomRestTemplateCustomizer som en bønne i en konfigurationsklasse eller i vores Spring Boot-applikationsklasse:

@Bean offentlig CustomRestTemplateCustomizer customRestTemplateCustomizer () {returner ny CustomRestTemplateCustomizer (); }

Med denne konfiguration hver RestTemplate som vi bruger i vores applikation vil have den tilpassede interceptor indstillet på den.

4. Konfiguration ved at skabe vores egne RestTemplateBuilder

Dette er den mest ekstreme tilgang til at tilpasse en RestTemplate. Det deaktiverer den automatiske standardkonfiguration af RestTemplateBuilder, så vi er nødt til at definere det selv:

@Bean @DependsOn (værdi = {"customRestTemplateCustomizer"}) offentlig RestTemplateBuilder restTemplateBuilder () {returner ny RestTemplateBuilder (customRestTemplateCustomizer ()); }

Efter dette kan vi indsprøjt brugerdefineret bygherre ind i vores klasser, som vi ville gøre med en standard RestTemplateBuilder og opret en RestTemplate som sædvanligt:

private RestTemplate restTemplate; @Autowired offentlig HelloController (RestTemplateBuilder builder) {this.restTemplate = builder.build (); }

5. Konklusion

Vi har set, hvordan vi konfigurerer en RestTemplate med standardindstillingen RestTemplateBuilder, bygger vores egne RestTemplateBuilder, eller ved hjælp af en RestTemplateCustomizer bønne.

Som altid kan den fulde codebase til dette eksempel findes i vores GitHub-lager.


$config[zx-auto] not found$config[zx-overlay] not found