काही कॉल्सना कॉर्पोरेट प्रॉक्सी वापरावी लागते तर दुसरे सेवेपर्यंत थेट पोहोचले जाते. विनंत्या ओव्हरलॅप होऊ शकतात म्हणून एक सामायिक फॅक्टरी बदलण्याऐवजी त्या मार्गांना वेगळी 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 साठी, त्या पुरवठादारास प्रॉक्सी एंडपॉइंटपर्यंत मर्यादित ठेवा.

अ‍ॅप्लिकेशनने जाणीवपूर्वक स्थापित केलेले इतर इंटरसेप्टर किंवा विनंती फॅक्टरी अजूनही त्याच्या स्वतःच्या क्लायंट कॉन्फिगरेशनचा भाग असतात. त्यांना खरोखर आवश्यक असलेल्या मार्गासोबत ठेवा.

संबंधित लेख