केही कलहरूले कर्पोरेट प्रोक्सी प्रयोग गर्नैपर्छ भने अर्को सेवा सिधै पुगिन्छ। अनुरोधहरू ओभरल्याप हुन सक्ने हुनाले एउटा साझा फ्याक्ट्री बदल्नुको सट्टा ती मार्गहरूलाई छुट्टाछुट्टै 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 का लागि, त्यो प्रदायकलाई प्रोक्सी इन्डप्वाइन्टमा सीमित गर्नुहोस्।

एप्लिकेसनले जानाजानी स्थापना गरेका अन्य इन्टरसेप्टर वा अनुरोध फ्याक्ट्रीहरू अझै पनि यसको आफ्नै क्लाइन्ट कन्फिगरेसनमा पर्छन्। तिनीहरूलाई साँच्चै आवश्यक पर्ने मार्गसँगै राख्नुहोस्।

सम्बन्धित लेखहरू