Algunhas chamadas deben usar o proxy corporativo mentres que outro servizo se acada directamente. Dea a esas rutas instancias RestTemplate distintas en lugar de modificar unha fábrica compartida mentres as solicitudes poden solaparse.

Dentro dunha clase de configuración de Spring existente:

@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);
}

Na fábrica de solicitudes JDK de Spring 6.2, Proxy.NO_PROXY fornece unha política de conexión directa explícita. Deixar sen configurar o proxy da fábrica permite en cambio a ruta de configuración habitual de URLConnection, que pode escoller un proxy da JVM.

Use @Qualifier no punto de inxección para seleccionar o bean requirido, por exemplo @Qualifier("directRestTemplate") RestTemplate rest. Só definir os dous beans non escolle entre eles para unha dependencia ambigua.

Este exemplo selecciona un proxy HTTP sen autenticación. Un transporte que necesite autenticación de proxy pode construírse por separado co seu provedor de credenciais compatible mantendo a mesma disposición de selección de beans. Para Spring 6 con Apache HttpClient 5, limite ese provedor ao punto de acceso do proxy.

Outros interceptores ou fábricas de solicitudes que a aplicación instale deliberadamente seguen pertencendo á súa propia configuración de cliente. Mantéñaos coa ruta que realmente os necesita.

Artigos relacionados