Bazı çağrılar kurumsal proxy'yi kullanmalı, başka bir servise ise doğrudan erişilir. İstekler çakışabildiğinden tek bir paylaşılan fabrikayı değiştirmek yerine bu rotalara ayrı RestTemplate örnekleri verin.

Mevcut bir Spring yapılandırma sınıfının içinde:

@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 istek fabrikasında Proxy.NO_PROXY açık bir doğrudan bağlantı politikası sağlar. Fabrikanın proxy'si ayarlanmadan bırakılırsa bunun yerine olağan URLConnection yapılandırma yolu izin verilir ve bu, bir JVM proxy'si seçebilir.

Gerekli bean'i seçmek için enjeksiyon noktasında @Qualifier kullanın, örneğin @Qualifier("directRestTemplate") RestTemplate rest. Yalnızca iki bean tanımlamak, belirsiz bir bağımlılıkta aralarında seçim yapmaz.

Bu örnek kimlik doğrulaması olmayan bir HTTP proxy'si seçer. Proxy kimlik doğrulaması gerektiren bir taşıma, aynı bean seçim düzeni korunarak desteklenen kimlik bilgisi sağlayıcısıyla ayrı olarak kurulabilir. Apache HttpClient 5 ile Spring 6 için bu sağlayıcıyı proxy uç noktasıyla sınırlayın.

Uygulamanın bilinçli olarak kurduğu diğer kesiciler veya istek fabrikaları yine de kendi istemci yapılandırmasına aittir. Onları gerçekten ihtiyaç duyan rota ile birlikte tutun.

İlgili makaleler