Noen kall må bruke bedriftsproxyen mens en annen tjeneste nås direkte. Gi disse rutene egne RestTemplate-instanser i stedet for å endre én delt fabrikk mens forespørsler kan overlappe.

Inne i en eksisterende Spring-konfigurasjonsklasse:

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

For JDK-forespørselsfabrikken i Spring 6.2 gir Proxy.NO_PROXY en eksplisitt direkte tilkoblingspolicy. Lar du fabrikkens proxy være uinnstilt, tillates i stedet den vanlige URLConnection-konfigurasjonsveien, som kan velge en JVM-proxy.

Bruk @Qualifier på injeksjonspunktet for å velge bønnen du trenger, for eksempel @Qualifier("directRestTemplate") RestTemplate rest. Bare å definere de to bønnene velger ikke mellom dem ved en tvetydig avhengighet.

Dette eksemplet velger en HTTP-proxy uten autentisering. En transport som trenger proxyautentisering kan bygges separat med sin støttede legitimasjonsleverandør mens samme bønnevalgsopplegg beholdes. For Spring 6 med Apache HttpClient 5, begrens den leverandøren til proxyens endepunkt.

Andre interceptorer eller forespørselsfabrikker som applikasjonen bevisst installerer, tilhører fortsatt dens egen klientkonfigurasjon. Hold dem sammen med ruten som faktisk trenger dem.

Relaterte artikler