将Spring Cloud Vault与@DynamicPropertySource一起使用时出现问题



使用TestContainers启动Vault容器时,会在启动过程中随机选择容器暴露的端口。

@Container
static VaultContainer vaultContainer = new VaultContainer<>("vault:1.7.2")
.withVaultToken(TOKEN)
.withInitCommand("secrets enable --path foo kv-v2")
.withInitCommand("kv put foo/app bar=foo");

使用@DynamicPropertySource覆盖属性

@DynamicPropertySource
static void addProperties(DynamicPropertyRegistry registry) {
registry.add("spring.cloud.vault.host",()->vaultContainer.getHost());
registry.add("spring.cloud.vault.port",()->vaultContainer.getFirstMappedPort());
registry.add("spring.cloud.vault.uri",()->"http://"+vaultContainer.getHost()+":"+vaultContainer.getFirstMappedPort());
registry.add("spring.cloud.vault.token",()->TOKEN);
}

不起作用,因为CCD_;参见";添加的属性。

该问题出现在Spring-Boot 2.5.1Spring-Cloud-Vault-Config 3.0.3中。

在GitHub上可以找到一个显示该问题的小项目。

我是做错了什么,还是有替代方法来覆盖配置?

当使用Spring-Vault@VaultPropertySource而不是Spring-Cloud-Vault时,一切都如预期的那样。

根据:https://github.com/spring-cloud/spring-cloud-vault/issues/602#event-4926845049这是CCD_ 10的问题。

最新更新