Կարգավորեք ուղղակի և փրոքսիով 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);
}
Spring 6.2-ի JDK հարցումների գործարանի համար Proxy.NO_PROXY-ն տալիս է բացահայտ ուղղակի կապի քաղաքականություն: Գործարանի փրոքսին չսահմանված թողնելը փոխարենը թույլ է տալիս URLConnection-ի սովորական կարգավորման ուղին, որը կարող է ընտրել JVM փրոքսի:
Օգտագործեք @Qualifier ներարկման կետում՝ պահանջվող bean-ը ընտրելու համար, օրինակ՝ @Qualifier("directRestTemplate") RestTemplate rest: Միայն երկու bean-երի սահմանումը չի ընտրում նրանց միջև երկիմաստ կախվածության դեպքում:
Այս օրինակը ընտրում է առանց նույնականացման HTTP փրոքսի: Փրոքսի նույնականացում պահանջող տրանսպորտը կարող է առանձին կառուցվել իր աջակցվող հավատարմագրերի մատակարարով՝ պահպանելով bean-ի ընտրության նույն կարգը: Apache HttpClient 5-ով Spring 6-ի համար սահմանափակեք այդ մատակարարին փրոքսի վերջնակետով:
Ծրագրի կողմից դիտավորյալ տեղադրված այլ ընդհատիչներ կամ հարցումների գործարաններ դեռ պատկանում են նրա սեփական հաճախորդի կոնֆիգուրացիային: Պահեք դրանք այն երթուղու հետ, որն իսկապես դրանց կարիքն ունի: