是否有符号项可以引用 spring-cloud config server?

Is there a symbolic item to reference spring-cloud config server?

我正在进行的一个项目正在利用 Spring Cloud Config 服务器来处理 属性 update/refresh。

一个反复出现的问题是如何reference/serve来自配置服务器的纯文本。

我知道服务器支持serving plain-text。我想弄清楚的是,如果我有一个参考 /foo/default/master/logj42.xml.

我如何以 "agnostic" 的方式引用它,这样如果我要输入:

{configserver}/foo/default/master/log4j2.xml in the config file

引用 {configserver} 将被扩展。

此外,当使用 "discovery" 时,如果我像上面那样注入对 "resource" 的引用,默认机制将尝试使用 java.net.URLConnection 来加载内容。我认为它不会解析 'discovery' 主机。

提前致谢。

我找到了一种微创但 "pierces the veil" 配置服务器实际所在位置的方法。

在主应用程序 class 上,需要添加注释 @EnableDiscoveryClient

我创建了一个方面来添加 属性 源,其中包含一个指示处理请求的服务器的实际 URI 的键:

@Component
@Aspect
public class ResolverAspect {
    @Autowired
    private DiscoveryClient discoveryClient;

    @Pointcut("execution(org.springframework.cloud.config.environment.Environment org.springframework.cloud.config.server.environment.EnvironmentController.*(..))
    private void environmentControllerResolve();

    @Around("environmentControllerResolve()")
    public Object environmentControllerResolveServer(final ProceedingJoinPoint pjp) throws Throwable {
        final Environment pjpReturn = (Environment)pjp.proceed();
        final ServiceInstance localSErviceInstance = discoveryClient.getLocalServiceInstance();
        final PropertySource instancePropertySource =
            new PropertySource("cloud-instance", Collections.singletonMap("configserver.instance.uri", localServiceInstance.getUri().toString()));
        pjpReturn.addFirst(instancePropertySource);
        return pjpReturn;
    }
}

通过这样做,我公开了一个键 configserver.instance.uri,然后可以从客户端的 属性 值和 interpolated/resolved 中引用它。

这对于公开实际配置服务器有一些影响,但对于解析不一定使用发现客户端的资源,可以使用它。

也可以通过创建自定义 属性 源并在从发现中定位后设置配置服务器 uri 来使用没有方面的 Customizing Bootstrap Configuration 来解决。 我遇到了类似的问题,

中有更多详细信息