Nakonfigurujte priame a proxy RestTemplate beany v Springu
Vytvorte samostatné beany RestTemplate pre HTTP proxy a výslovne priame pripojenie JDK namiesto prepínania zdieľanej trasy okolo jednotlivých volaní.
Niektoré volania musia prechádzať podnikovým proxy, kým iná služba je dostupná priamo. Dajte týmto trasám samostatné inštancie RestTemplate namiesto zmeny jednej zdieľanej továrne, kým sa požiadavky môžu prekrývať.
Vnútri existujúcej konfiguračnej triedy Spring:
@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);
}
Pre továreň požiadaviek JDK v Springu 6.2 poskytuje Proxy.NO_PROXY výslovnú politiku priameho pripojenia. Ak proxy továrne ponecháte nenastavené, povolí sa namiesto toho zvyčajná cesta konfigurácie URLConnection, ktorá môže zvoliť proxy JVM.
V mieste vloženia použite @Qualifier na výber požadovaného beana, napríklad @Qualifier("directRestTemplate") RestTemplate rest. Samotné definovanie dvoch beanov medzi nimi pri nejednoznačnej závislosti nevyberá.
Tento príklad volí HTTP proxy bez overovania. Prepravu vyžadujúcu overenie proxy možno zostaviť samostatne s jej podporovaným poskytovateľom prihlasovacích údajov a pritom zachovať rovnaké usporiadanie výberu beanov. Pre Spring 6 s Apache HttpClient 5 obmedzte tohto poskytovateľa na koncový bod proxy.
Iné zachytávače alebo továrne požiadaviek, ktoré aplikácia zámerne inštaluje, stále patria k jej vlastnej konfigurácii klienta. Ponechajte ich pri trase, ktorá ich skutočne potrebuje.