Konfigurasikan RestTemplate dengan RestTemplateBuilder

1. Pengenalan

Dalam tutorial ringkas ini, kita akan melihat cara mengkonfigurasi kacang Spring RestTemplate .

Mari mulakan dengan membincangkan tiga jenis konfigurasi utama:

  • menggunakan RestTemplateBuilder lalai
  • menggunakan RestTemplateCustomizer
  • mencipta RestTemplateBuilder kita sendiri

Untuk dapat mengujinya dengan mudah, ikuti panduan mengenai cara menyediakan aplikasi Spring Boot yang sederhana.

2. Konfigurasi Menggunakan RestTemplateBuilder Default

Untuk mengkonfigurasi RestTemplate dengan cara ini, kita perlu memasukkan kacang RestTemplateBuilder lalai yang disediakan oleh Spring Boot ke dalam kelas kami:

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

The RestTemplate kacang dicipta dengan kaedah ini yang skop terhad kepada kelas di mana kami membinanya .

3. Konfigurasi Menggunakan RestTemplateCustomizer

Dengan pendekatan ini, kita dapat membuat penyesuaian aditif di seluruh aplikasi.

Ini adalah pendekatan yang sedikit lebih rumit. Untuk ini, kita perlu membuat kelas yang menerapkan RestTemplateCustomizer, dan menentukannya sebagai kacang:

public class CustomRestTemplateCustomizer implements RestTemplateCustomizer { @Override public void customize(RestTemplate restTemplate) { restTemplate.getInterceptors().add(new CustomClientHttpRequestInterceptor()); } }

The CustomClientHttpRequestInterceptor pemintas melakukan pembalakan asas permintaan itu:

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()); } }

Sekarang, kami menetapkan CustomRestTemplateCustomizer sebagai kacang dalam kelas konfigurasi atau di kelas aplikasi Spring Boot kami:

@Bean public CustomRestTemplateCustomizer customRestTemplateCustomizer() { return new CustomRestTemplateCustomizer(); }

Dengan konfigurasi ini, setiap RestTemplate yang akan kita gunakan dalam aplikasi kita akan menetapkan pemintas khusus di atasnya.

4. Konfigurasi dengan Membuat RestTemplateBuilder Kita Sendiri

Ini adalah pendekatan paling ekstrem untuk menyesuaikan RestTemplate. Ia melumpuhkan konfigurasi automatik RestTemplateBuilder , jadi kita perlu menentukannya sendiri:

@Bean @DependsOn(value = {"customRestTemplateCustomizer"}) public RestTemplateBuilder restTemplateBuilder() { return new RestTemplateBuilder(customRestTemplateCustomizer()); }

Selepas ini, kita dapat memasukkan penyusun khas ke kelas seperti yang kita lakukan dengan RestTemplateBuilder lalai dan membuat RestTemplate seperti biasa:

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

5. Kesimpulan

Kami telah melihat bagaimana untuk mengkonfigurasi RestTemplate dengan lalai RestTemplateBuilder , membina kita sendiri RestTemplateBuilder, atau menggunakan RestTemplateCustomizer kacang .

Seperti biasa, pangkalan data lengkap untuk contoh ini boleh didapati di repositori GitHub kami.