När Vault levererar ConfigData kan dess första begäran inträffa innan en vanlig proxyanpassningsböna finns. Installera i stället begärandefabriken genom bootstrap-registret.

För en Spring Framework 6.1-eller-senare-stack:

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 är den befintliga SpringApplication. Lägg till denna initialiserare innan du anropar run, och behåll Vault-URI:n och autentiseringsinställningarna.

ClientFactoryWrapper exponerar denna fabrik för Vaults bootstrap-infrastruktur; den installerar inte en applikationsomfattande standard för orelaterade HTTP-klienter.

Använd projektets kompatibla Cloud Vault/Boot-beroendepaket. Apache 4-exempel kan inte kopieras in i Spring Framework 6:s Apache 5-begärandefabrik.

Gör proxyadressen tillgänglig före bootstrap också. För en offentligt nåbar Vault-server på en rutt som tillåter offentliga proxys, välj en HTTP-kandidat från HTTP-proxylistan innan applikationen startar. Om den bara lagras i Vault kan applikationen inte upptäcka den rutt som behövs för den första Vault-begäran.

Relaterade artiklar