Config Server从Git仓库读取配置文件

记录一下今天配置config server遇到的问题。。。

Config Server 的配置文件application.yml,代码如下

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
          git:
            uri: https://github.com/chenzhixiang111/Config-Server-Test.git
            searchPaths: '{profile}'
      label: master
server:
  port: 8888

searchPaths这个标签是困扰我好久的一个标签,网上说它是仓库路径。。。但由于好奇心驱使,我多次测试后发现它好像又不只是表示仓库路径。

再创建一个Config Client的module,配置文件application.yml的代码如下:

spring:
  application:
    name: config-client
  cloud:
    config:
      label: master
      uri: http://localhost:8769#这个uri真的是巨坑,我不管端口号写多少程序启动后都是8888
      profile: dev
server:
  port: 8881

做好这些配置后,由于server的配置里searchPath是‘{profile}’,所以会以client中的配置的profile属性来加载。不同的client就可以配置上不同的profile。

GitHub上的文件目录如下
在这里插入图片描述
依次启动server和client,走你~
看到client控制台上输出了以下内容:
在这里插入图片描述
看到这里我大概就理解了,client获取配置文件信息的映射路径是:
{server.cloud.config.server.git.uri}/{searchPath}

这样是符合网上所说的searchPath是仓库路径。

再做第二个测试:
将client中的dev改成dev2。在我的Git仓库里是没有dev2这个文件夹的,那么再启动一下看看效果。
在这里插入图片描述
可以看到,这次控制台上输出的路径就没有dev2这个包了。。。
可见如果没有和searchPath对应的文件夹,那么程序就会去找名字中带有{searchPath}的配置文件。。。

那么问题又来了,如果仓库中既有dev文件夹,又有名字中带有dev的配置文件,那么config server会去找哪个呢
我在仓库中又新建一个application-dev.yml文件。再把searchPath改成dev,这次看看结果如何。
在这里插入图片描述
在这里插入图片描述
从控制台中可以看到两个配置文件都被找到了。
得出结论:如果仓库中既有和searchPath对应的文件,又有文件夹,那么两者都会被加载。

继续我的好奇心,如果和{searchPath}对应的文件是在一个文件夹下,而文件夹名却不和{searchPath}不对应,这样的话还能找到目标文件吗。
我在test文件夹下创建一个application-test2.yml文件。
在这里插入图片描述
将searchPath改为test2。启动项目,结果报错了。。。
得出结论:如果在最外层目录中没找到{searchPath},那么就不会继续从文件夹中找了,直接会报错

我对以上测试做个总结就是,Config Server会根据所配置的uri,去找名字中含有{searchPath}的文件或文件夹。加载的路径大概是这样:
{uri}/名字中含有{searchPath}的文件或文件夹/

那么如果说程序能在Github找到与{searchPath}对应的包名,它能读取到这个包中的哪些文件呢,是全部的文件都能读取吗。
我把searchPath的值改为test,GitHub上的目录就和上一张图一样。
启动程序,控制台输出了一下内容。
在这里插入图片描述
可以看到,这次程序都去了三个配置文件。只有application-test2.yml没有被读取到。
这就让我很疑惑了,config server绝对不是找到searchParh文件夹下的所有文件。那么它的匹配规则是什么呢。。。想不明白。

最后,还有一个最让我头疼的地方,为什么我的cloud.config.uri这个标签不生效啊!!!明明写的是localhost:8769,可它还是要去远程连接localhost:8888,害我只能把config server的端口改成8888了。有没有大神告诉我为什么这个标签不生效啊。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/czx2018/article/details/82888066