Konfigurējiet tiešās un starpniekservera RestTemplate bean Spring
Izveidojiet atsevišķas RestTemplate bean HTTP starpniekserverim un nepārprotami tiešam JDK savienojumam, nevis pārslēdziet koplietotu maršrutu ap atsevišķiem izsaukumiem.
Daži izsaukumi ir jāveic caur uzņēmuma starpniekserveri, kamēr cits pakalpojums tiek sasniegts tieši. Piešķiriet šiem maršrutiem atsevišķas RestTemplate instances, nevis mainiet vienu koplietotu rūpnīcu, kamēr pieprasījumi var pārklāties.
Esošā Spring konfigurācijas klasē:
@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 JDK pieprasījumu rūpnīcai Proxy.NO_PROXY nodrošina skaidru tieša savienojuma politiku. Ja rūpnīcas starpniekserveris tiek atstāts neiestatīts, tā vietā tiek atļauts parastais URLConnection konfigurācijas ceļš, kas var izvēlēties JVM starpniekserveri.
Izmantojiet @Qualifier injekcijas punktā, lai atlasītu nepieciešamo bean, piemēram, @Qualifier("directRestTemplate") RestTemplate rest. Tikai abu bean definēšana neizvēlas starp tiem neskaidras atkarības gadījumā.
Šis piemērs izvēlas HTTP starpniekserveri bez autentifikācijas. Transportu, kuram nepieciešama starpniekservera autentifikācija, var veidot atsevišķi ar tā atbalstīto akreditācijas datu sniedzēju, saglabājot to pašu bean atlases kārtību. Spring 6 ar Apache HttpClient 5 gadījumā ierobežojiet šo sniedzēju ar starpniekservera galapunktu.
Citi lietotnes apzināti instalēti starpnieki vai pieprasījumu rūpnīcas joprojām pieder pie tās pašas klienta konfigurācijas. Turiet tos kopā ar maršrutu, kuram tie patiešām ir vajadzīgi.