وقتی Vault داده‌های ConfigData را تأمین می‌کند، نخستین درخواست آن می‌تواند پیش از وجود یک bean معمول برای سفارشی‌سازی پروکسی رخ دهد. به‌جای آن، کارخانه درخواست را از طریق رجیستری 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 اضافه کنید و نشانی Vault و تنظیمات احراز هویت را حفظ کنید.

ClientFactoryWrapper این کارخانه را در اختیار زیرساخت bootstrap و Vault قرار می‌دهد؛ برای کلاینت‌های HTTP نامرتبط، پیش‌فرضی در سطح برنامه نصب نمی‌کند.

از مجموعهٔ وابستگی‌های سازگار Cloud Vault/Boot پروژه استفاده کنید. نمونه‌های Apache 4 را نمی‌توان به کارخانه درخواست Apache 5 در Spring Framework 6 کپی کرد.

نشانی پروکسی را نیز پیش از bootstrap در دسترس قرار دهید. برای سرور Vault با دسترسی عمومی در مسیری که پروکسی‌های عمومی را مجاز می‌کند، پیش از راه‌اندازی برنامه یک گزینهٔ HTTP از فهرست پروکسی‌های HTTP انتخاب کنید. اگر فقط در Vault ذخیره شود، برنامه نمی‌تواند مسیر لازم برای آن نخستین درخواست Vault را کشف کند.

مقالات مرتبط