কিছু কল কর্পোরেট প্রক্সি ব্যবহার করতেই হবে, আবার অন্য একটি সেবা সরাসরি পৌঁছানো হয়। অনুরোধগুলো একে অপরের সাথে ওভারল্যাপ করতে পারে, তাই একটি ভাগ করা ফ্যাক্টরি বদলানোর বদলে সেই রুটগুলোকে আলাদা 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-এর জন্য, সেই প্রদানকারীকে প্রক্সি এন্ডপয়েন্টে সীমাবদ্ধ করুন।

অ্যাপ্লিকেশনটি ইচ্ছাকৃতভাবে ইনস্টল করা অন্য ইন্টারসেপ্টর বা অনুরোধ ফ্যাক্টরিগুলো এখনও তাদের নিজস্ব ক্লায়েন্ট কনফিগারেশনের অন্তর্গত। সেগুলোকে প্রকৃতপক্ষে যেই রুটের প্রয়োজন সেই রুটের সাথে রাখুন।

সম্পর্কিত নিবন্ধ