Määritä suorat ja välityspalvelimen kautta kulkevat RestTemplate-beanit Springissä
Luo erilliset RestTemplate-beanit HTTP-välityspalvelimelle ja nimenomaisesti suoralle JDK-yhteydelle sen sijaan, että vaihtaisit jaettua reittiä yksittäisten kutsujen ympärillä.
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.