เมื่อ Vault จัดส่ง ConfigData คำขอแรกของมันอาจเกิดขึ้นก่อนที่ bean สำหรับปรับแต่งพร็อกซี่ตามปกติจะมีอยู่ ให้ติดตั้งแฟกทอรีคำขอผ่าน bootstrap registry แทน

สำหรับสแตก 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 ที่มีอยู่แล้ว ให้เพิ่ม initializer นี้ก่อนเรียก run โดยคง URI ของ Vault และการตั้งค่าการยืนยันตัวตนไว้

ClientFactoryWrapper เปิดเผยแฟกทอรีนี้ให้โครงสร้างพื้นฐาน bootstrap ของ Vault แต่ไม่ได้ติดตั้งค่าเริ่มต้นทั้งแอปพลิเคชันสำหรับไคลเอนต์ HTTP ที่ไม่เกี่ยวข้อง

ใช้ชุดดีเพนเดนซี Cloud Vault/Boot ที่เข้ากันได้ของโปรเจกต์ ตัวอย่าง Apache 4 ไม่สามารถคัดลอกไปยังแฟกทอรีคำขอ Apache 5 ของ Spring Framework 6 ได้

ทำให้ที่อยู่พร็อกซี่พร้อมใช้งานก่อน bootstrap ด้วย สำหรับเซิร์ฟเวอร์ Vault ที่เข้าถึงได้จากสาธารณะบนเส้นทางที่อนุญาตพร็อกซี่สาธารณะ ให้เลือกตัวเลือก HTTP จากรายการพร็อกซี่ HTTPก่อนที่แอปพลิเคชันจะเริ่ม หากเก็บไว้เฉพาะใน Vault แอปพลิเคชันจะไม่สามารถค้นหาเส้นทางที่จำเป็นสำหรับคำขอ Vault ครั้งแรกนั้นได้

บทความที่เกี่ยวข้อง