Кейбір шақырулар корпоративтік прокси арқылы өтуі керек, ал басқа қызметке тікелей қол жеткізіледі. Сұраныстар қабаттасуы мүмкін болғандықтан, бір ортақ фабриканы өзгертудің орнына бұл маршруттарға жеке 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 үшін сол провайдерді прокси соңғы нүктесімен шектеңіз.

Қолданба әдейі орнатқан басқа интерцепторлар немесе сұраныс фабрикалары әлі де оның өз клиент конфигурациясына жатады. Оларды шынымен қажет ететін маршрутпен бірге ұстаңыз.

Қатысты мақалалар