Айрым чакыруулар корпоративдик прокси аркылуу өтүшү керек, ал эми башка кызматка түз жетүүгө болот. Сурамдар кабатташы мүмкүн болгондуктан, бир жалпы фабриканы өзгөртүүнүн ордуна ошол маршруттарга өзүнчө 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);
}

Spring 6.2нин JDK сурам фабрикасы үчүн Proxy.NO_PROXY так түз байланыш саясатын берет. Фабриканын проксиин коюлбаган бойдон калтырса, анын ордуна кадимки URLConnection конфигурация жолуна уруксат берилет, ал JVM проксиин тандашы мүмкүн.

Керектүү bean'ди тандоо үчүн инъекция чекитинде @Qualifier колдонуңуз, мисалы @Qualifier("directRestTemplate") RestTemplate rest. Эки bean'ди эле аныктоо эки ача түшүнүктүү көз карандылык үчүн алардын ортосунда тандоо жасбайт.

Бул мисал аутентификациясыз HTTP проксиин тандайт. Прокси аутентификациясын талап кылган транспортту ошол эле bean тандоо тартибин сактап, анын колдоого алынган ыйгарым укук берүүчүсү менен өзүнчө курууга болот. Apache HttpClient 5 менен Spring 6 үчүн ошол берүүчүнү проксинин акыркы чекити менен чектеңиз.

Колдонмо атайын орноткон башка интерцепторлор же сурам фабрикалары дагы эле анын өзүнүн кардар конфигурациясына таандык. Аларды чындап керек болгон маршрут менен бирге кармаңыз.

Тектеш макалалар