Конфигурирајте директни и прокси RestTemplate bean-ови во Spring
Создајте одделни RestTemplate bean-ови за HTTP прокси и за изречно директна JDK врска, наместо да префрлате споделена рута околу поединечни повици.
Некои повици мора да го користат корпоративниот прокси, додека друга услуга се достигнува директно. Дајте им на тие рути одделни 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 на точката на вбризгување за да го изберете потребниот bean, на пример @Qualifier("directRestTemplate") RestTemplate rest. Самото дефинирање на двата bean-а не избира помеѓу нив при двосмислена зависност.
Овој пример избира HTTP прокси без автентикација. Транспорт на кој му треба автентикација на прокси може да се изгради одделно со неговиот поддржан давател на акредитиви додека се задржува истиот распоред за избор на bean-ови. За Spring 6 со Apache HttpClient 5, ограничете го тој давател на крајната точка на проксито.
Другите пресретнувачи или фабрики за барања што апликацијата намерно ги инсталира сè уште припаѓаат на нејзината сопствена клиентска конфигурација. Држете ги со рутата што навистина им е потребна.