Sanidi bean za RestTemplate za moja kwa moja na za kupitia proksi katika Spring
Unda bean tofauti za RestTemplate kwa proksi ya HTTP na muunganisho wa JDK ulio wazi wa moja kwa moja badala ya kubadilisha njia inayoshirikiwa karibu na kila mwito.
Baadhi ya miito lazima itumie proksi ya shirika wakati huduma nyingine inafikiwa moja kwa moja. Wape njia hizo instance tofauti za RestTemplate badala ya kubadilisha kiwanda kimoja kinachoshirikiwa wakati maombi yanaweza kukingamana.
Ndani ya darasa lililopo la usanidi wa 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);
}
Kwa kiwanda cha maombi cha JDK cha Spring 6.2, Proxy.NO_PROXY hutoa sera ya wazi ya muunganisho wa moja kwa moja. Kuacha proksi ya kiwanda bila kuwekwa kunaruhusu badala yake njia ya kawaida ya usanidi wa URLConnection, ambayo inaweza kuchagua proksi ya JVM.
Tumia @Qualifier kwenye sehemu ya kudunga kuchagua bean inayohitajika, kwa mfano @Qualifier("directRestTemplate") RestTemplate rest. Kufafanua bean mbili peke yake hakuchagui kati yao kwa utegemezi usiojulikana.
Mfano huu huchagua proksi ya HTTP bila uthibitishaji. Usafiri unaohitaji uthibitishaji wa proksi unaweza kujengwa kando na mtoa hati za uthibitisho wake unaotumika wakati mpangilio uleule wa kuchagua bean unahifadhiwa. Kwa Spring 6 na Apache HttpClient 5, weka kikomo mtoa huyo kwenye ncha ya proksi.
Vizuizi vingine au viwanda vya maombi vinavyowekwa na programu kwa makusudi bado ni mali ya usanidi wake wa mteja. Viweke pamoja na njia inayovihitaji kwa kweli.