Неки позиви морају користити корпоративни прокси док се друга услуга достиже директно. Дајте тим рутама одвојене RestTemplate инстанце уместо да мењате једну дељену фабрику док се захтеви могу преклапати.

Унутар постојеће 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);
}

За JDK фабрику захтева у Spring-у 6.2, Proxy.NO_PROXY даје изричиту политику директне везе. Ако прокси фабрике остане неподешен, уместо тога се дозвољава уобичајена путања конфигурације URLConnection, која може изабрати JVM прокси.

Користите @Qualifier на месту убацивања да изаберете потребан бин, на пример @Qualifier("directRestTemplate") RestTemplate rest. Само дефинисање два бина не бира између њих код двосмислене зависности.

Овај пример бира HTTP прокси без аутентификације. Транспорт коме треба аутентификација проксија може се посебно изградити са својим подржаним добављачем акредитива уз задржавање истог распореда избора бинова. За Spring 6 са Apache HttpClient 5, ограничите тог добављача на прокси крајњу тачку.

Други пресретачи или фабрике захтева које апликација намерно инсталира и даље припадају њеној сопственој конфигурацији клијента. Држите их уз руту којој заиста требају.

Повезани чланци