Որոշ կանչեր պետք է օգտագործեն կորպորատիվ փրոքսին, մինչդեռ մեկ այլ ծառայության հասնում են ուղղակիորեն: Այդ երթուղիներին տվեք առանձին 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 փրոքսի:

Օգտագործեք @Qualifier ներարկման կետում՝ պահանջվող bean-ը ընտրելու համար, օրինակ՝ @Qualifier("directRestTemplate") RestTemplate rest: Միայն երկու bean-երի սահմանումը չի ընտրում նրանց միջև երկիմաստ կախվածության դեպքում:

Այս օրինակը ընտրում է առանց նույնականացման HTTP փրոքսի: Փրոքսի նույնականացում պահանջող տրանսպորտը կարող է առանձին կառուցվել իր աջակցվող հավատարմագրերի մատակարարով՝ պահպանելով bean-ի ընտրության նույն կարգը: Apache HttpClient 5-ով Spring 6-ի համար սահմանափակեք այդ մատակարարին փրոքսի վերջնակետով:

Ծրագրի կողմից դիտավորյալ տեղադրված այլ ընդհատիչներ կամ հարցումների գործարաններ դեռ պատկանում են նրա սեփական հաճախորդի կոնֆիգուրացիային: Պահեք դրանք այն երթուղու հետ, որն իսկապես դրանց կարիքն ունի:

Առնչվող հոդվածներ