Cando Vault subministra ConfigData, a súa primeira solicitude pode ocorrer antes de que exista un bean ordinario de personalización de proxy. Instale no seu lugar a fábrica de solicitudes a través do rexistro bootstrap.

Para unha pila de Spring Framework 6.1 ou 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 é o SpringApplication existente. Engada este inicializador antes de chamar a run, conservando o URI de Vault e a configuración de autenticación.

ClientFactoryWrapper expón esta fábrica á infraestrutura bootstrap de Vault; non instala un valor predeterminado para toda a aplicación en clientes HTTP non relacionados.

Use o conxunto de dependencias Cloud Vault/Boot compatible do proxecto. Os exemplos de Apache 4 non se poden copiar na fábrica de solicitudes Apache 5 de Spring Framework 6.

Faga que o enderezo do proxy estea dispoñible tamén antes do bootstrap. Para un servidor Vault accesible publicamente nunha ruta que permita proxies públicos, escolla un candidato HTTP de a lista de proxies HTTP antes do inicio da aplicación. Se só se almacena en Vault, a aplicación non pode descubrir a ruta necesaria para esa primeira solicitude a Vault.

Artigos relacionados