Gdy Vault dostarcza ConfigData, jego pierwsze żądanie może wystąpić, zanim istnieje zwykły bean dostosowujący proxy. Zamiast tego zainstaluj fabrykę żądań przez rejestr bootstrap.

Dla stosu Spring Framework 6.1 lub nowszego:

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 to istniejący SpringApplication. Dodaj ten inicjalizator przed wywołaniem run, zachowując URI Vaulta i ustawienia uwierzytelniania.

ClientFactoryWrapper udostępnia tę fabrykę infrastrukturze bootstrap Vaulta; nie instaluje domyślnego ustawienia dla całej aplikacji w niepowiązanych klientach HTTP.

Użyj zgodnego zestawu zależności Cloud Vault/Boot projektu. Przykładów dla Apache 4 nie można skopiować do fabryki żądań Apache 5 w Spring Framework 6.

Udostępnij adres proxy także przed bootstrapem. Dla publicznie dostępnego serwera Vault na trasie, która zezwala na publiczne proxy, wybierz kandydata HTTP z listy proxy HTTP przed uruchomieniem aplikacji. Jeśli jest przechowywany tylko w Vault, aplikacja nie może odkryć trasy potrzebnej do tego pierwszego żądania do Vault.

Powiązane artykuły