Spring-də birbaşa və proksi RestTemplate bean-lərini konfiqurasiya edin
Fərdi çağırışlar ətrafında paylaşılan marşrutu dəyişmək əvəzinə, HTTP proksisi və açıq birbaşa JDK bağlantısı üçün ayrı RestTemplate bean-ləri yaradın.
Bəzi çağırışlar korporativ proksidən keçməlidir, digər xidmətə isə birbaşa çatılır. Sorğular üst-üstə düşə bildiyi üçün bir paylaşılan fabriki dəyişmək əvəzinə həmin marşrutlara ayrı RestTemplate nüsxələri verin.
Mövcud Spring konfiqurasiya sinfinin daxilində:
@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-nin JDK sorğu fabriki üçün Proxy.NO_PROXY açıq birbaşa bağlantı siyasəti təqdim edir. Fabrikin proksisini təyin etmədən buraxmaq isə adi URLConnection konfiqurasiya yoluna icazə verir və bu, JVM proksisini seçə bilər.
Tələb olunan bean-i seçmək üçün inyeksiya nöqtəsində @Qualifier istifadə edin, məsələn @Qualifier("directRestTemplate") RestTemplate rest. Sadəcə iki bean-i təyin etmək qeyri-müəyyən asılılıq üçün onların arasında seçim etmir.
Bu nümunə autentifikasiyasız HTTP proksisi seçir. Proksi autentifikasiyası tələb edən nəqliyyat, eyni bean-seçimi quruluşunu saxlayaraq, dəstəklədiyi etimad provayderi ilə ayrıca qurula bilər. Apache HttpClient 5 ilə Spring 6 üçün, həmin provayderi proksi son nöqtəsi ilə məhdudlaşdırın.
Tətbiq tərəfindən qəsdən quraşdırılmış digər interceptorlar və ya sorğu fabrikləri yenə də öz müştəri konfiqurasiyasına aiddir. Onları həqiqətən ehtiyac duyan marşrutla birlikdə saxlayın.