Neki pozivi moraju koristiti korporativni proxy dok se druga usluga doseže izravno. Dajte tim rutama zasebne RestTemplate instance umjesto mijenjanja jedne zajedničke tvornice dok se zahtjevi mogu preklapati.

Unutar postojeće Spring konfiguracijske 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 tvornicu zahtjeva u Springu 6.2, Proxy.NO_PROXY daje izričitu politiku izravne veze. Ako proxy tvornice ostane nepodešen, umjesto toga dopušta se uobičajena putanja konfiguracije URLConnection, koja može odabrati JVM proxy.

Koristite @Qualifier na mjestu ubacivanja za odabir potrebnog beana, na primjer @Qualifier("directRestTemplate") RestTemplate rest. Samo definiranje dvaju beanova ne odabire između njih kod dvosmislene ovisnosti.

Ovaj primjer odabire HTTP proxy bez autentifikacije. Prijenos kojem treba autentifikacija proxyja može se zasebno izgraditi sa svojim podržanim davateljem vjerodajnica uz zadržavanje istog rasporeda odabira beanova. Za Spring 6 s Apache HttpClient 5, ograničite tog davatelja na proxy završnu točku.

Drugi presretači ili tvornice zahtjeva koje aplikacija namjerno instalira i dalje pripadaju njezinoj vlastitoj konfiguraciji klijenta. Držite ih uz rutu kojoj doista trebaju.

Povezani članci