ചില വിളികൾ കോർപ്പറേറ്റ് പ്രോക്സി ഉപയോഗിക്കണം, അതേസമയം മറ്റൊരു സേവനം നേരിട്ട് എത്തുന്നു. അഭ്യർത്ഥനകൾ ഓവർലാപ്പ് ചെയ്യാനിടയുള്ളതിനാൽ ഒരു പങ്കിട്ട ഫാക്ടറി മാറ്റുന്നതിനുപകരം ആ റൂട്ടുകൾക്ക് വേറിട്ട 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-ന്, ആ ദാതാവിനെ പ്രോക്സി എൻഡ്പോയിന്റിലേക്ക് പരിമിതപ്പെടുത്തുക.

ആപ്ലിക്കേഷൻ ബോധപൂർവം ഇൻസ്റ്റാൾ ചെയ്യുന്ന മറ്റ് ഇന്റർസെപ്റ്ററുകളോ അഭ്യർത്ഥനാ ഫാക്ടറികളോ ഇപ്പോഴും അതിന്റെ സ്വന്തം ക്ലയന്റ് കോൺഫിഗറേഷനിൽ ഉൾപ്പെടുന്നു. അവയ്ക്ക് യഥാർത്ഥത്തിൽ ആവശ്യമുള്ള റൂട്ടിനൊപ്പം അവ സൂക്ഷിക്കുക.

അനുബന്ധ ലേഖനങ്ങൾ