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.

Əlaqəli məqalələr