Коли 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.

Схожі статті