Instale la fábrica de proxies de Spring Cloud Vault antes de application.run
Utilice el gancho del registro bootstrap para acceder a ConfigData, que puede ocurrir antes de que existan los beans ordinarios de la aplicación.
Cuando Vault proporciona ConfigData, su primera solicitud puede ocurrir antes de que exista un bean ordinario de personalización de proxy. Instale en su lugar la fábrica de solicitudes a través del registro bootstrap.
Para una pila de Spring Framework 6.1 o posterior:
import java.net.InetSocketAddress;
import java.net.ProxySelector;
import java.net.http.HttpClient;
import org.springframework.http.client.JdkClientHttpRequestFactory;
import org.springframework.vault.config.AbstractVaultConfiguration
.ClientFactoryWrapper;
var http = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example.net", 8080)))
.build();
application.addBootstrapRegistryInitializer(registry ->
registry.register(ClientFactoryWrapper.class, context ->
new ClientFactoryWrapper(
new JdkClientHttpRequestFactory(http))));application es el SpringApplication existente. Añada este inicializador antes de llamar a run, conservando el URI de Vault y la configuración de autenticación.
ClientFactoryWrapper expone esta fábrica a la infraestructura bootstrap de Vault; no instala un valor predeterminado para toda la aplicación en clientes HTTP no relacionados.
Utilice el conjunto de dependencias Cloud Vault/Boot compatible del proyecto. Los ejemplos de Apache 4 no se pueden copiar en la fábrica de solicitudes Apache 5 de Spring Framework 6.
Haga que la dirección del proxy esté disponible también antes del bootstrap. Para un servidor Vault accesible públicamente en una ruta que permita proxies públicos, elija un candidato HTTP de la lista de proxies HTTP antes del inicio de la aplicación. Si solo se almacena en Vault, la aplicación no puede descubrir la ruta necesaria para esa primera solicitud a Vault.