Sebagian panggilan harus memakai proksi korporat sementara layanan lain dijangkau langsung. Berikan instance RestTemplate terpisah untuk rute tersebut alih-alih mengubah satu pabrik bersama saat permintaan dapat tumpang tindih.

Di dalam kelas konfigurasi Spring yang sudah ada:

@Bean("directRestTemplate")
RestTemplate directRestTemplate() {
    var factory = new SimpleClientHttpRequestFactory();
    factory.setProxy(java.net.Proxy.NO_PROXY);
    return new RestTemplate(factory);
}

@Bean("proxyRestTemplate")
RestTemplate proxyRestTemplate() {
    var factory = new SimpleClientHttpRequestFactory();
    factory.setProxy(new java.net.Proxy(
        java.net.Proxy.Type.HTTP,
        new java.net.InetSocketAddress("proxy.example", 8080)));
    return new RestTemplate(factory);
}

Untuk pabrik permintaan JDK Spring 6.2, Proxy.NO_PROXY memberikan kebijakan koneksi langsung yang eksplisit. Membiarkan proksi pabrik tidak diatur justru mengizinkan jalur konfigurasi URLConnection biasa, yang dapat memilih proksi JVM.

Gunakan @Qualifier pada titik injeksi untuk memilih bean yang dibutuhkan, misalnya @Qualifier("directRestTemplate") RestTemplate rest. Hanya mendefinisikan kedua bean tidak memilih di antara keduanya untuk dependensi yang ambigu.

Contoh ini memilih proksi HTTP tanpa autentikasi. Transport yang memerlukan autentikasi proksi dapat dibangun terpisah dengan penyedia kredensial yang didukungnya sambil mempertahankan susunan pemilihan bean yang sama. Untuk Spring 6 dengan Apache HttpClient 5, batasi penyedia itu ke titik akhir proksi.

Interceptor atau pabrik permintaan lain yang sengaja dipasang aplikasi tetap menjadi bagian dari konfigurasi kliennya sendiri. Pertahankan mereka pada rute yang benar-benar membutuhkannya.

Artikel terkait