Konfigurer en RestTemplate med RestTemplateBuilder

1. Introduksjon

I denne raske opplæringen skal vi se på hvordan du konfigurerer en vår RestTemplate bønne.

La oss starte med å diskutere de tre hovedkonfigurasjonstypene:

  • bruker standard RestTemplateBuilder
  • bruker en RestTemplateCustomizer
  • skape våre egne RestTemplateBuilder

For å være i stand til å teste dette enkelt, vennligst følg guiden om hvordan du konfigurerer en enkel Spring Boot-applikasjon.

2. Konfigurasjon ved bruk av standard RestTemplateBuilder

For å konfigurere en RestTemplate på denne måten må vi injiser standard RestTemplateBuilder bønne levert av Spring Boot inn i klassene våre:

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

De RestTemplate bønne opprettet med denne metoden har sin omfanget begrenset til klassen vi bygger den i.

3. Konfigurasjon ved hjelp av a RestTemplateCustomizer

Med denne tilnærmingen kan vi lage en applikasjonsomfattende, additiv tilpasning.

Dette er en litt mer komplisert tilnærming. For dette trenger vi lage en klasse som implementerer RestTemplateCustomizer,og definer det som en bønne:

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

De CustomClientHttpRequestInterceptor interceptor gjør grunnleggende logging av forespørselen:

offentlig klasse CustomClientHttpRequestInterceptor implementerer ClientHttpRequestInterceptor {private static Logger LOGGER = LoggerFactory .getLogger (CustomClientHttpRequestInterceptor.class); @Override offentlig ClientHttpResponse avlyssning (HttpRequest forespørsel, byte [] kropp, ClientHttpRequestExecution utførelse) kaster IOException {logRequestDetails (forespørsel); returutførelse. utfør (forespørsel, kropp); } private ugyldige logRequestDetails (HttpRequest-forespørsel) {LOGGER.info ("Overskrifter: {}", request.getHeaders ()); LOGGER.info ("Forespørselsmetode: {}", request.getMethod ()); LOGGER.info ("Be om URI: {}", request.getURI ()); }}

Nå definerer vi CustomRestTemplateCustomizer som en bønne i en konfigurasjonsklasse eller i vår Spring Boot-applikasjonsklasse:

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

Med denne konfigurasjonen, hver RestTemplate som vi vil bruke i applikasjonen vår, vil den tilpassede avlysseren være satt på den.

4. Konfigurasjon ved å lage våre egne RestTemplateBuilder

Dette er den mest ekstreme tilnærmingen til å tilpasse en RestTemplate. Den deaktiverer standard autokonfigurasjon av RestTemplateBuilder, så vi må definere det selv:

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

Etter dette kan vi injiser den tilpassede byggmesteren inn i våre klasser som vi ville gjort med en standard RestTemplateBuilder og lage en RestTemplate som vanlig:

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

5. Konklusjon

Vi har sett hvordan vi konfigurerer en RestTemplate med standardinnstillingen RestTemplateBuilder, bygge vår egen RestTemplateBuilder, eller bruke en RestTemplateCustomizer bønne.

Som alltid kan hele kodebasen for dette eksemplet finnes i GitHub-depotet vårt.


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