微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在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 举报,一经查实,本站将立刻删除。