Configura beans RestTemplate directes i amb proxy a Spring
Creeu beans RestTemplate diferents per a un proxy HTTP i una connexió JDK explícitament directa, en lloc de canviar una ruta compartida al voltant de cada crida.
Algunes crides han d'utilitzar el proxy corporatiu mentre que un altre servei s'assoleix directament. Doneu a aquestes rutes instàncies RestTemplate diferents en lloc de modificar una fàbrica compartida mentre les peticions es poden solapar.
Dins d'una classe de configuració de Spring existent:
@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);
}
A la fàbrica de peticions JDK de Spring 6.2, Proxy.NO_PROXY proporciona una política de connexió directa explícita. Deixar el proxy de la fàbrica sense definir, en canvi, permet el camí de configuració habitual d'URLConnection, que pot triar un proxy de la JVM.
Utilitzeu @Qualifier al punt d'injecció per triar el bean necessari, per exemple @Qualifier("directRestTemplate") RestTemplate rest. Només definir els dos beans no tria entre ells per a una dependència ambigua.
Aquest exemple tria un proxy HTTP sense autenticació. Un transport que necessiti autenticació de proxy es pot construir per separat amb el seu proveïdor de credencials compatible, tot mantenint la mateixa disposició de selecció de beans. Per a Spring 6 amb Apache HttpClient 5, limiteu aquest proveïdor al punt final del proxy.
Altres interceptors o fàbriques de peticions que l'aplicació instal·li deliberadament segueixen pertanyent a la seva pròpia configuració de client. Manteniu-los amb la ruta que realment els necessita.