Közvetlen és proxyzott RestTemplate beanek beállítása Springben
Hozz létre külön RestTemplate beaneket egy HTTP proxyhoz és egy kifejezetten közvetlen JDK-kapcsolathoz ahelyett, hogy egy megosztott útvonalat váltogatnál az egyes hívások körül.
Egyes hívásoknak a vállalati proxyn kell átmenniük, míg egy másik szolgáltatás közvetlenül érhető el. Adj ezeknek az útvonalaknak külön RestTemplate példányokat ahelyett, hogy egy megosztott gyárat módosítanál, miközben a kérések átfedhetik egymást.
Egy meglévő Spring konfigurációs osztályon belül:
@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);
}
A Spring 6.2 JDK kérésgyára esetében a Proxy.NO_PROXY kifejezett közvetlen kapcsolati szabályt ad. Ha a gyár proxyja beállítatlan marad, helyette a szokásos URLConnection konfigurációs útvonal engedélyezett, amely JVM proxyt választhat.
A szükséges bean kiválasztásához használj @Qualifier-t az injektálási ponton, például @Qualifier("directRestTemplate") RestTemplate rest. A két bean puszta definiálása nem választ közöttük egy kétértelmű függőség esetén.
Ez a példa hitelesítés nélküli HTTP proxyt választ. A proxyhitelesítést igénylő átvitel külön építhető fel a támogatott hitelesítőadat-szolgáltatójával, miközben ugyanaz a beanválasztási elrendezés marad. A Spring 6-hoz Apache HttpClient 5-tel korlátozd ezt a szolgáltatót a proxy végpontjára.
Az alkalmazás által szándékosan telepített egyéb interceptorek vagy kérésgyárak továbbra is a saját klienskonfigurációjához tartoznak. Tartsd őket azzal az útvonallal, amelynek valóban szüksége van rájuk.