Neki pozivi moraju koristiti korporativni proxy dok se druga usluga doseže direktno. Dajte tim rutama odvojene RestTemplate instance umesto menjanja jedne zajedničke fabrike dok se zahtevi mogu preklapati.

Unutar postojeće Spring konfiguracione klase:

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

Za JDK fabriku zahteva u Springu 6.2, Proxy.NO_PROXY daje izričitu politiku direktne veze. Ako proxy fabrike ostane nepodešen, umesto toga se dozvoljava uobičajena putanja konfiguracije URLConnection, koja može izabrati JVM proxy.

Koristite @Qualifier na mestu ubacivanja da izaberete potreban bean, na primer @Qualifier("directRestTemplate") RestTemplate rest. Samo definisanje dva beana ne bira između njih kod dvosmislene zavisnosti.

Ovaj primer bira HTTP proxy bez autentifikacije. Transport kome treba autentifikacija proxyja može se posebno izgraditi sa svojim podržanim dobavljačem akreditiva uz zadržavanje istog rasporeda izbora beanova. Za Spring 6 sa Apache HttpClient 5, ograničite tog dobavljača na proxy krajnju tačku.

Drugi presretači ili fabrike zahteva koje aplikacija namerno instalira i dalje pripadaju njenoj sopstvenoj konfiguraciji klijenta. Držite ih uz rutu kojoj zaista trebaju.

Povezani članci