Configureer een RestTemplate met RestTemplateBuilder

1. Inleiding

In deze korte tutorial gaan we kijken naar hoe u een veer configureert RestTemplate Boon.

Laten we beginnen met het bespreken van de drie belangrijkste configuratietypen:

  • met behulp van de standaard RestTemplateBuilder
  • gebruik maken van een RestTemplateCustomizer
  • onze eigen creëren RestTemplateBuilder

Om dit gemakkelijk te kunnen testen, volgt u de handleiding voor het opzetten van een eenvoudige Spring Boot-applicatie.

2. Configuratie met behulp van de standaard RestTemplateBuilder

Om een RestTemplate op deze manier moeten we injecteer de default RestTemplateBuilder boon geleverd door Spring Boot in onze lessen:

privé RestTemplate restTemplate; @Autowired openbare HelloController (RestTemplateBuilder-builder) {this.restTemplate = builder.build (); }

De RestTemplate boon gemaakt met deze methode heeft zijn reikwijdte beperkt tot de klasse waarin we het bouwen.

3. Configuratie met behulp van een RestTemplateCustomizer

Met deze aanpak kunnen we maak een applicatie-brede, additieve aanpassing.

Dit is een iets gecompliceerder benadering. Hiervoor moeten we maak een klasse die implementeert RestTemplateCustomizer,en definieer het als een boon:

openbare klasse CustomRestTemplateCustomizer implementeert RestTemplateCustomizer {@Override openbare leegte aanpassen (RestTemplate restTemplate) {restTemplate.getInterceptors (). add (nieuwe CustomClientHttpRequestInterceptor ()); }}

De CustomClientHttpRequestInterceptor interceptor doet basisregistratie van het verzoek:

openbare klasse CustomClientHttpRequestInterceptor implementeert ClientHttpRequestInterceptor {privé statische logger LOGGER = LoggerFactory .getLogger (CustomClientHttpRequestInterceptor.class); @Override openbare ClientHttpResponse onderscheppen (HttpRequest verzoek, byte [] body, ClientHttpRequestExecution uitvoering) gooit IOException {logRequestDetails (verzoek); return execution.execute (verzoek, body); } privé ongeldig logRequestDetails (HttpRequest-verzoek) {LOGGER.info ("Headers: {}", request.getHeaders ()); LOGGER.info ("Verzoekmethode: {}", request.getMethod ()); LOGGER.info ("Verzoek-URI: {}", request.getURI ()); }}

Nu definiëren we CustomRestTemplateCustomizer als boon in een configuratieklasse of in onze Spring Boot-toepassingsklasse:

@Bean openbaar CustomRestTemplateCustomizer customRestTemplateCustomizer () {retourneer nieuwe CustomRestTemplateCustomizer (); }

Met deze configuratie elke RestTemplate die we in onze applicatie zullen gebruiken, hebben de aangepaste interceptor erop ingesteld.

4. Configuratie door onze eigen te creëren RestTemplateBuilder

Dit is de meest extreme benadering om een RestTemplate. Het schakelt de standaard automatische configuratie van RestTemplateBuilder, dus we moeten het zelf definiëren:

@Bean @DependsOn (waarde = {"customRestTemplateCustomizer"}) openbare RestTemplateBuilder restTemplateBuilder () {retourneer nieuwe RestTemplateBuilder (customRestTemplateCustomizer ()); }

Hierna kunnen we injecteer de custom builder in onze lessen zoals we zouden doen met een standaard RestTemplateBuilder en maak een RestTemplate zoals gewoonlijk:

privé RestTemplate restTemplate; @Autowired openbare HelloController (RestTemplateBuilder-builder) {this.restTemplate = builder.build (); }

5. Conclusie

We hebben gezien hoe u een RestTemplate met de standaard RestTemplateBuilder, onze eigen bouwen RestTemplateBuilder, of met behulp van een RestTemplateCustomizer Boon.

Zoals altijd is de volledige codebase voor dit voorbeeld te vinden in onze GitHub-repository.