Khi Vault cung cấp ConfigData, yêu cầu đầu tiên của nó có thể xảy ra trước khi một bean tùy chỉnh proxy thông thường tồn tại. Thay vào đó, hãy cài đặt nhà máy yêu cầu thông qua sổ đăng ký bootstrap.

Đối với ngăn xếp Spring Framework 6.1 trở lên:

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 là SpringApplication hiện có. Thêm bộ khởi tạo này trước khi gọi run, đồng thời giữ nguyên URI của Vault và các thiết lập xác thực.

ClientFactoryWrapper đưa nhà máy này ra cho hạ tầng bootstrap của Vault; nó không cài đặt mặc định toàn ứng dụng cho các ứng dụng HTTP không liên quan.

Dùng bộ phụ thuộc Cloud Vault/Boot tương thích của dự án. Không thể sao chép các ví dụ Apache 4 vào nhà máy yêu cầu Apache 5 của Spring Framework 6.

Cũng hãy làm cho địa chỉ proxy khả dụng trước bootstrap. Với máy chủ Vault có thể truy cập công khai trên một tuyến cho phép proxy công khai, hãy chọn một ứng viên HTTP từ danh sách proxy HTTP trước khi ứng dụng khởi động. Nếu nó chỉ được lưu trong Vault, ứng dụng không thể tìm ra tuyến cần thiết cho yêu cầu Vault đầu tiên đó.

Bài viết liên quan