Configurați bean-uri RestTemplate directe și prin proxy în Spring
Creați bean-uri RestTemplate separate pentru un proxy HTTP și o conexiune JDK explicit directă, în loc să comutați o rută partajată în jurul fiecărui apel.
Unele apeluri trebuie să folosească proxy-ul corporativ, în timp ce alt serviciu este accesat direct. Oferiți acelor rute instanțe RestTemplate separate în loc să modificați o fabrică partajată cât timp cererile se pot suprapune.
În interiorul unei clase de configurare Spring existente:
@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);
}
Pentru fabrica de cereri JDK din Spring 6.2, Proxy.NO_PROXY oferă o politică explicită de conexiune directă. Lăsarea proxy-ului fabricii nesetat permite în schimb calea obișnuită de configurare URLConnection, care poate selecta un proxy JVM.
Folosiți @Qualifier la punctul de injecție pentru a selecta bean-ul necesar, de exemplu @Qualifier("directRestTemplate") RestTemplate rest. Doar definirea celor două bean-uri nu alege între ele pentru o dependență ambiguă.
Acest exemplu selectează un proxy HTTP fără autentificare. Un transport care necesită autentificare la proxy poate fi construit separat cu furnizorul său de credențiale acceptat, păstrând aceeași aranjare de selectare a bean-urilor. Pentru Spring 6 cu Apache HttpClient 5, limitați acel furnizor la punctul final al proxy-ului.
Alte interceptoare sau fabrici de cereri instalate deliberat de aplicație aparțin în continuare propriei configurații de client. Păstrați-le împreună cu ruta care are într-adevăr nevoie de ele.