Egyes hívásoknak a vállalati proxyn kell átmenniük, míg egy másik szolgáltatás közvetlenül érhető el. Adj ezeknek az útvonalaknak külön RestTemplate példányokat ahelyett, hogy egy megosztott gyárat módosítanál, miközben a kérések átfedhetik egymást.

Egy meglévő Spring konfigurációs osztályon belül:

@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);
}

A Spring 6.2 JDK kérésgyára esetében a Proxy.NO_PROXY kifejezett közvetlen kapcsolati szabályt ad. Ha a gyár proxyja beállítatlan marad, helyette a szokásos URLConnection konfigurációs útvonal engedélyezett, amely JVM proxyt választhat.

A szükséges bean kiválasztásához használj @Qualifier-t az injektálási ponton, például @Qualifier("directRestTemplate") RestTemplate rest. A két bean puszta definiálása nem választ közöttük egy kétértelmű függőség esetén.

Ez a példa hitelesítés nélküli HTTP proxyt választ. A proxyhitelesítést igénylő átvitel külön építhető fel a támogatott hitelesítőadat-szolgáltatójával, miközben ugyanaz a beanválasztási elrendezés marad. A Spring 6-hoz Apache HttpClient 5-tel korlátozd ezt a szolgáltatót a proxy végpontjára.

Az alkalmazás által szándékosan telepített egyéb interceptorek vagy kérésgyárak továbbra is a saját klienskonfigurációjához tartoznak. Tartsd őket azzal az útvonallal, amelynek valóban szüksége van rájuk.

Kapcsolódó cikkek