عندما يوفّر 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، مع الاحتفاظ بعنوان Vault وإعدادات المصادقة.

يعرّض ClientFactoryWrapper هذا المصنع لبنية bootstrap في Vault؛ وهو لا يثبّت إعدادًا افتراضيًا على مستوى التطبيق لعملاء HTTP غير المعنيين.

استخدم مجموعة التبعيات المتوافقة من Cloud Vault/Boot الخاصة بالمشروع. لا يمكن نسخ أمثلة Apache 4 إلى مصنع الطلبات Apache 5 في Spring Framework 6.

اجعل عنوان الوسيط متاحًا قبل bootstrap أيضًا. بالنسبة لخادم Vault يمكن الوصول إليه علنًا على مسار يسمح بوسطاء عامّين، اختر مرشّح HTTP من قائمة وسطاء HTTP قبل بدء التطبيق. وإذا كان مخزَّنًا في Vault فقط، فلن يتمكن التطبيق من اكتشاف المسار اللازم لطلب Vault الأول ذلك.

مقالات ذات صلة