问题描述
上下文:
我们在 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 (将#修改为@)