Spring 'native' 模式下的云配置服务器在 Windows 环境中无法正常工作

Spring Cloud Config Server in 'native' mode doesn't quite work in Windows environment

得到我需要的 OSX。在 Windows,事情有些不妙。

我正在使用 'native' 模式在多个服务(spring 云客户端)之间共享本地属性文件。我有:

-Dspring.cloud.config.server.native.searchLocations=C:/Development/SVN/WSR_20150711/wsr-config/config/

并且 C:\Development\SVN\WSR_20150711\wsr-config\config\wsr\wsr-dev.properties 存在。但是当我通过 URI /wsr/dev/wsr 指定资源时,看起来 spring 云配置服务器没有获取这个文件——它在 OSX 和 Linux.[=24= 中工作]

我仔细研究了一下,发现 NativeEnvironmentRepository 第 135 - 158 行的代码可能存在一些问题:

            if (normal.startsWith("file:")) {
                normal = new File(normal.substring("file:".length()))
                        .getAbsolutePath();
            }
            for (String pattern : StringUtils
                    .commaDelimitedListToStringArray(getLocations(searchLocations,
                            result.getLabel()))) {
                if (!pattern.contains(":")) {
                    pattern = "file:" + pattern;
                }
                if (pattern.startsWith("file:")) {
                    pattern = StringUtils.cleanPath(new File(pattern
                            .substring("file:".length())).getAbsolutePath()) + "/";
                }
                if (logger.isTraceEnabled()) {
                    logger.trace("Testing pattern: " + pattern
                            + " with property source: " + name);
                }
                if (normal.startsWith(pattern)
                        && !normal.substring(pattern.length()).contains("/")) {
                    matches = true;
                    break;
                }
            }

看起来像通过新的 File(..).getAbsolutePath() 位强制 'normal' 强制斜线从 / 更改为 \(有时 \) ,因此不匹配 patten 变量(在下一个 for 循环中创建)。

在调试模式下,我可以看到 pattern 设置为 C: /Development/SVN/WSR_20150711/wsr-config/config/ 而 normal 设置为 C:\Development\SVN\WSR_20150711\wsr-config\config\wsr\wsr-dev.properties.

想法?我们有机会尽快解决这个问题吗?

这是一个已修复的已知问题。参见 https://github.com/spring-cloud/spring-cloud-config/issues/150