Joidenkin kutsujen on käytettävä yrityksen välityspalvelinta, kun taas toinen palvelu tavoitetaan suoraan. Anna näille reiteille erilliset RestTemplate-instanssit sen sijaan, että muuttaisit yhtä jaettua tehdasta, kun pyynnöt voivat mennä päällekkäin.

Olemassa olevan Spring-konfiguraatioluokan sisällä:

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

Spring 6.2:n JDK-pyyntötehtaan osalta Proxy.NO_PROXY antaa nimenomaisen suoran yhteyden käytännön. Jos tehtaan välityspalvelin jätetään asettamatta, sallitaan sen sijaan tavallinen URLConnection-konfiguraatiopolku, joka voi valita JVM:n välityspalvelimen.

Valitse tarvittava bean @Qualifierilla injektiopisteessä, esimerkiksi @Qualifier("directRestTemplate") RestTemplate rest. Pelkkä kahden beanin määrittely ei valitse niiden välillä monitulkintaisessa riippuvuudessa.

Tämä esimerkki valitsee HTTP-välityspalvelimen ilman todennusta. Välityspalvelimen todennuksen tarvitseva siirto voidaan rakentaa erikseen sen tuetulla tunnistetietojen tarjoajalla ja säilyttää sama beanin valintajärjestely. Spring 6:lle Apache HttpClient 5:n kanssa rajaa tämä tarjoaja välityspalvelimen päätepisteeseen.

Muut interceptointiohjelmat tai pyyntötehtaat, jotka sovellus asentaa tarkoituksella, kuuluvat edelleen sen omaan asiakaskonfiguraatioon. Pidä ne reitillä, joka niitä todella tarvitsee.

Aiheeseen liittyvät artikkelit