Konfigurirajte direktne i proxy RestTemplate beanove u Springu
Napravite odvojene RestTemplate beanove za HTTP proxy i za izričito direktnu JDK vezu, umjesto da mijenjate zajedničku rutu oko pojedinačnih poziva.
Neki pozivi moraju koristiti korporativni proxy, dok se druga usluga doseže direktno. Dajte tim rutama odvojene RestTemplate instance umjesto da mijenjate jednu zajedničku fabriku 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 fabriku zahtjeva u Springu 6.2, Proxy.NO_PROXY daje izričitu politiku direktne veze. Ako proxy fabrike ostane nepodešen, umjesto toga se dopušta uobičajena putanja konfiguracije URLConnection, koja može odabrati JVM proxy.
Koristite @Qualifier na mjestu ubacivanja da odaberete potreban bean, na primjer @Qualifier("directRestTemplate") RestTemplate rest. Samo definisanje dvaju beanova ne bira između njih kod dvosmislene zavisnosti.
Ovaj primjer odabire HTTP proxy bez autentifikacije. Transport kojem je potrebna autentifikacija proxyja može se posebno izgraditi sa svojim podržanim dobavljačem vjerovanja, uz zadržavanje istog rasporeda odabira beanova. Za Spring 6 s Apache HttpClient 5, ograničite tog dobavljača na proxy krajnju tačku.
Drugi interceptor i fabrike zahtjeva koje aplikacija namjerno instalira i dalje pripadaju njenoj vlastitoj konfiguraciji klijenta. Držite ih uz rutu kojoj zaista trebaju.