Některá volání musí procházet podnikovým proxy, zatímco jiná služba je dostupná přímo. Dejte těmto trasám samostatné instance RestTemplate, místo abyste měnili jednu sdílenou továrnu, zatímco se požadavky mohou překrývat.

Uvnitř existující konfigurační třídy 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);
}

U továrny požadavků JDK v Springu 6.2 poskytuje Proxy.NO_PROXY explicitní politiku přímého připojení. Pokud proxy továrny ponecháte nenastavené, povolíte tím obvyklou cestu konfigurace URLConnection, která může zvolit proxy JVM.

V místě vložení použijte @Qualifier k výběru požadovaného beanu, například @Qualifier("directRestTemplate") RestTemplate rest. Pouhé definování obou beanů mezi nimi pro nejednoznačnou závislost nevybírá.

Tento příklad volí HTTP proxy bez ověřování. Přepravu vyžadující ověření proxy lze sestavit zvlášť s jejím podporovaným poskytovatelem přihlašovacích údajů a přitom zachovat stejné uspořádání výběru beanů. Pro Spring 6 s Apache HttpClient 5 omezte tohoto poskytovatele na koncový bod proxy.

Jiné zachytávače nebo továrny požadavků, které aplikace záměrně instaluje, stále patří k její vlastní konfiguraci klienta. Ponechte je u trasy, která je skutečně potřebuje.

Související články