Când Vault furnizează ConfigData, prima sa cerere poate avea loc înainte să existe un bean obișnuit de personalizare a proxy-ului. Instalați în schimb fabrica de cereri prin registrul bootstrap.

Pentru un stack Spring Framework 6.1 sau mai nou:

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 este SpringApplication existent. Adăugați acest inițializator înainte de a apela run, păstrând URI-ul Vault și setările de autentificare.

ClientFactoryWrapper expune această fabrică infrastructurii bootstrap a Vault; nu instalează o valoare implicită la nivelul aplicației pentru clienții HTTP fără legătură.

Folosiți setul compatibil de dependențe Cloud Vault/Boot al proiectului. Exemplele Apache 4 nu pot fi copiate în fabrica de cereri Apache 5 a Spring Framework 6.

Faceți adresa proxy-ului disponibilă și înainte de bootstrap. Pentru un server Vault accesibil public pe o rută care permite proxy-uri publice, alegeți un candidat HTTP din lista de proxy-uri HTTP înainte de pornirea aplicației. Dacă este stocat doar în Vault, aplicația nu poate descoperi ruta necesară pentru acea primă cerere către Vault.

Articole similare