在Springboot application.properties中从env var映射到env var不起作用

问题描述

上下文:

我们在 k8s集群中运行 micro服务,我们确实拥有不同的命名空间和集群。

我们在集群中设置了x-forwarded-host header。在 springbooot应用程序中,我们需要根据标头中的主机来映射要调用的url。我们认为可以在application.properties上做到这一点。我们之所以使用它们很繁琐,是因为我们为每个环境都提供了一个配置,然后我们的管道选择相应的配置并设置env变量。

问题:

现在,我们认为可以使用application.properties的映射功能将主机映射到目标。主机和目标都取决于它们所在的环境。那就是我们的问题。

可以正常工作的是:

endpoint.mapping[HARD_CODED_SOURCE_URL]=${VARIABLE_HOSTNAME:}

然后我们像这样提取该值:

@Validated
@Component
@ConfigurationProperties("endpoint")
@Getter
@Setter
public class EndpointProperties {

    private Map<String,String> urlMapping;

    public Optional<String> getMappingUrl(String sourceUrl) {
        return Optional.of(urlMapping.get(sourceUrl));
    }
}

我们真正想要做的是:

endpoint.mapping[${SOURCE_URL:}]=${VARIABLE_HOSTNAME:}

但是这不起作用,该映射为密钥:sourceUrl返回null。当然,我们在地图上有多个条目,并且确实有很多可以使用此解决方案的服务。因此,我们希望我们根本看不到我们在做错什么:=)您可能有一个主意吗?

非常感谢您抽出宝贵的时间阅读本文!

欢呼 罗宾

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)