Ang ilang tawag ay dapat gumamit ng corporate proxy habang ang ibang serbisyo ay direktang naaabot. Bigyan ang mga rutang iyon ng hiwalay na RestTemplate instance sa halip na baguhin ang isang shared factory habang maaaring mag-overlap ang mga kahilingan.

Sa loob ng umiiral na Spring configuration class:

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

Para sa JDK request factory ng Spring 6.2, ang Proxy.NO_PROXY ay nagbibigay ng tahasang direktang patakaran sa koneksyon. Kung iiwan na hindi nakatakda ang proxy ng factory, papayagan sa halip ang karaniwang URLConnection configuration path, na maaaring pumili ng JVM proxy.

Gamitin ang @Qualifier sa injection point upang piliin ang kinakailangang bean, halimbawa @Qualifier("directRestTemplate") RestTemplate rest. Ang pagdedeklara lamang ng dalawang bean ay hindi pumipili sa pagitan nila para sa malabong dependency.

Pinipili ng halimbawang ito ang isang HTTP proxy na walang authentication. Ang isang transport na nangangailangan ng proxy authentication ay maaaring itayo nang hiwalay kasama ng sinusuportahang credential provider nito habang pinapanatili ang parehong kaayusan sa pagpili ng bean. Para sa Spring 6 na may Apache HttpClient 5, limitahan ang provider na iyon sa endpoint ng proxy.

Ang iba pang interceptor o request factory na sadyang ini-install ng application ay kabilang pa rin sa sarili nitong client configuration. Panatilihin sila kasama ng rutang tunay na nangangailangan sa kanila.

Kaugnay na mga artikulo