Установите прокси-фабрику Spring Cloud Vault до application.run
Используйте перехватчик реестра bootstrap для доступа к ConfigData, который может произойти до появления обычных бинов приложения.
Когда Vault предоставляет ConfigData, его первый запрос может произойти до того, как появится обычный бин настройки прокси. Установите фабрику запросов через реестр bootstrap.
Для стека Spring Framework 6.1 или новее:
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 — это существующий SpringApplication. Добавьте этот инициализатор перед вызовом run, сохранив URI Vault и параметры аутентификации.
ClientFactoryWrapper предоставляет эту фабрику инфраструктуре bootstrap Vault; он не устанавливает общий для приложения по умолчанию для несвязанных HTTP-клиентов.
Используйте совместимый набор зависимостей Cloud Vault/Boot проекта. Примеры для Apache 4 нельзя скопировать в фабрику запросов Apache 5 в Spring Framework 6.
Сделайте адрес прокси доступным и до bootstrap. Для публично доступного сервера Vault на маршруте, который допускает публичные прокси, выберите HTTP-кандидата из списка HTTP-прокси до запуска приложения. Если он хранится только в Vault, приложение не сможет обнаружить маршрут, необходимый для этого первого запроса к Vault.