Spring లో ప్రత్యక్ష మరియు ప్రాక్సీ RestTemplate బీన్లను కాన్ఫిగర్ చేయండి
ప్రతి కాల్ చుట్టూ భాగస్వామ్య మార్గాన్ని మార్చే బదులు HTTP ప్రాక్సీ మరియు స్పష్టమైన ప్రత్యక్ష JDK కనెక్షన్ కోసం వేర్వేరు RestTemplate బీన్లను సృష్టించండి.
కొన్ని కాల్లు కార్పొరేట్ ప్రాక్సీని ఉపయోగించాలి, మరో సేవ నేరుగా చేరుకోబడుతుంది. అభ్యర్థనలు ఓవర్ల్యాప్ కావచ్చు కాబట్టి ఒక భాగస్వామ్య ఫ్యాక్టరీని మార్చే బదులు ఆ మార్గాలకు వేర్వేరు RestTemplate ఇన్స్టాన్స్లను ఇవ్వండి.
ఇప్పటికే ఉన్న 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);
}
Spring 6.2 యొక్క JDK అభ్యర్థన ఫ్యాక్టరీకి, Proxy.NO_PROXY స్పష్టమైన ప్రత్యక్ష కనెక్షన్ విధానాన్ని అందిస్తుంది. ఫ్యాక్టరీ ప్రాక్సీని సెట్ చేయకుండా వదిలేస్తే బదులుగా సాధారణ URLConnection కాన్ఫిగరేషన్ మార్గం అనుమతించబడుతుంది, అది JVM ప్రాక్సీని ఎంచుకోవచ్చు.
అవసరమైన బీన్ను ఎంచుకోవడానికి ఇంజెక్షన్ పాయింట్ వద్ద @Qualifier ఉపయోగించండి, ఉదాహరణకు @Qualifier("directRestTemplate") RestTemplate rest. కేవలం రెండు బీన్లను నిర్వచించడం అస్పష్టమైన ఆధారత కోసం వాటి మధ్య ఎంపిక చేయదు.
ఈ ఉదాహరణ ప్రామాణీకరణ లేని HTTP ప్రాక్సీని ఎంచుకుంటుంది. ప్రాక్సీ ప్రామాణీకరణ అవసరమయ్యే రవాణాను అదే బీన్-ఎంపిక ఏర్పాటును నిలుపుకుంటూ దాని మద్దతు ఉన్న క్రెడెన్షియల్ ప్రొవైడర్తో విడిగా నిర్మించవచ్చు. Apache HttpClient 5 తో Spring 6 కోసం, ఆ ప్రొవైడర్ను ప్రాక్సీ ఎండ్పాయింట్కు పరిమితం చేయండి.
అప్లికేషన్ ఉద్దేశపూర్వకంగా ఇన్స్టాల్ చేసే ఇతర ఇంటర్సెప్టర్లు లేదా అభ్యర్థన ఫ్యాక్టరీలు ఇప్పటికీ దాని స్వంత క్లయింట్ కాన్ఫిగరేషన్కు చెందుతాయి. నిజంగా అవసరమయ్యే మార్గంతో పాటు వాటిని ఉంచండి.