Зарим дуудлага корпорацийн проксигоор гарах ёстой бол өөр үйлчилгээг шууд хүрдэг. Хүсэлтүүд давхцаж болзошгүй тул нэг хуваалцсан фабрикийг өөрчлөхийн оронд тэдгээр маршрутад тусдаа 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-ын хувьд тэр нийлүүлэгчийг проксигийн төгсгөлийн цэгээр хязгаарлана уу.

Аппликешн зориуд суулгасан бусад интерцептор эсвэл хүсэлтийн фабрикууд өөрийн клиент тохиргоонд харьяалагдсан хэвээр байна. Тэдгээрийг үнэхээр шаардлагатай маршруттай нь хамт байлгаарай.

Холбоотой нийтлэлүүд