Konfigurirajte RestTemplate s RestTemplateBuilder
1. Uvod
U ovom ćemo brzom vodiču pogledati kako konfigurirati oprugu RestTemplate grah.
Počnimo s raspravom o tri glavne vrste konfiguracije:
- koristeći zadani RestTemplateBuilder
- pomoću a RestTemplateCustomizer
- stvarajući vlastiti RestTemplateBuilder
Da biste to mogli lako testirati, slijedite upute za postavljanje jednostavne aplikacije Spring Boot.
2. Konfiguracija pomoću zadanog RestTemplateBuilder
Za konfiguriranje a RestTemplate na ovaj način, trebamo ubrizgati zadani RestTemplateBuilder grah pruža Spring Boot u naše razrede:
privatni RestTemplate restTemplate; @Autowired javni HelloController (RestTemplateBuilder builder) {this.restTemplate = builder.build (); }
The RestTemplate grah stvoren ovom metodom ima svoj opseg ograničen na klasu u kojoj ga gradimo.
3. Konfiguracija pomoću a RestTemplateCustomizer
Ovim pristupom možemo stvoriti prilagodbu aditiva za cijelu aplikaciju.
Ovo je malo složeniji pristup. Za ovo moramo stvoriti klasu koja implementira RestTemplateCustomizer,i definirajte ga kao grah:
javna klasa CustomRestTemplateCustomizer implementira RestTemplateCustomizer {@Override custom void customize (RestTemplate restTemplate) {restTemplate.getInterceptors (). add (new CustomClientHttpRequestInterceptor ()); }}
The CustomClientHttpRequestInterceptor presretač vrši osnovno bilježenje zahtjeva:
javna klasa CustomClientHttpRequestInterceptor implementira ClientHttpRequestInterceptor {private static Logger LOGGER = LoggerFactory .getLogger (CustomClientHttpRequestInterceptor.class); @Override javni ClientHttpResponse presretanje (zahtjev HttpRequest, tijelo bajta [], izvršavanje ClientHttpRequestExecution) baca IOException {logRequestDetails (zahtjev); vratiti izvršenje.izvršiti (zahtjev, tijelo); } privatna void logRequestDetails (HttpRequest zahtjev) {LOGGER.info ("Zaglavlja: {}", request.getHeaders ()); LOGGER.info ("Metoda zahtjeva: {}", request.getMethod ()); LOGGER.info ("URI zahtjeva: {}", request.getURI ()); }}
Sada definiramo CustomRestTemplateCustomizer kao grah u klasi konfiguracije ili u našoj aplikacijskoj klasi Spring Boot:
@Bean public CustomRestTemplateCustomizer customRestTemplateCustomizer () {return new CustomRestTemplateCustomizer (); }
S ovom konfiguracijom, svaki RestTemplate koje ćemo koristiti u našoj aplikaciji na sebi će imati prilagođeni presretač.
4. Konfiguracija stvaranjem vlastitog RestTemplateBuilder
Ovo je najekstremniji pristup prilagodbi a RestTemplate. To onemogućava zadanu automatsku konfiguraciju sustava RestTemplateBuilder, pa ga moramo sami definirati:
@Bean @DependsOn (value = {"customRestTemplateCustomizer"}) public RestTemplateBuilder restTemplateBuilder () {return new RestTemplateBuilder (customRestTemplateCustomizer ()); }
Nakon ovoga možemo ubrizgati prilagođeni graditelj u naše razrede kao što bismo to radili sa zadanim RestTemplateBuilder i stvoriti a RestTemplate kao i obično:
privatni RestTemplate restTemplate; @Autowired javni HelloController (graditelj RestTemplateBuilder) {this.restTemplate = builder.build (); }
5. Zaključak
Vidjeli smo kako konfigurirati a RestTemplate sa zadanim RestTemplateBuilder, gradeći svoje RestTemplateBuilder, ili pomoću a RestTemplateCustomizer grah.
Kao i uvijek, kompletna baza kodova za ovaj primjer može se naći u našem GitHub spremištu.