Встановіть проксі-фабрику Spring Cloud Vault до application.run
Використовуйте гачок реєстру bootstrap для доступу до ConfigData, що може відбутися до появи звичайних бінів застосунку.
Коли 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.