我所在的公司决定将springboot项目的所有配置属性集中在一个地方。为此,我们配置了 spring-cloud-config-server
指向github存储库。
在github上,我们为每个应用程序创建了一个文件夹。例子:
-https://github.com/myusername/my-spring-cloud-config-repo (Github's base folder)
--my-project-1 (folder)
---my-project-1.properties (file)
---application-dev.properties (file)
---application-prod.properties (file)
--my-project-2 (folder)
---my-project-2.properties (file)
---application-dev.properties (file)
---application-prod.properties (file)
---application-test.properties (file)
最初 application.properties
在我们的 spring-cloud-config-server
具有以下配置:
server.port=9090
spring.cloud.config.server.git.uri=https://github.com/myusername/my-spring-cloud-config-repo.git
spring.cloud.config.server.git.username=myusername
spring.cloud.config.server.git.password=mypassword
spring.cloud.config.server.git.skip-ssl-validation=true
spring.cloud.config.server.git.clone-on-start=true
spring.cloud.config.server.git.force-pull=true
spring.cloud.config.server.git.searchPaths=*/**
因此,一旦启动服务器,我们就可以发送http请求:
http://localhost:9090/my-project-2/test
它将成功地返回上的所有配置 my-project-2.properties
以及 application-test.properties
内部 my-project-2
文件夹,这是我们想要的行为。
问题开始于我们发送:
http://localhost:9090/my-project-2/dev
因为它会返回上的所有配置 my-project-2.properties
以及 application-dev.properties
内部 my-project-2
文件夹也是 application-dev.properties
文件来自 my-project-1
文件夹也是。这是因为 searchPaths=*/**
强制配置服务器在存储库的所有文件夹中搜索“dev”文件,这样每次客户端启动时都会导致冲突。
为了解决这个问题,根据这里和这里,我可以用 wildcards
在 searchPaths
配置:
spring.cloud.config.server.git.searchPaths={application}/{profile}
但它不起作用。。。我也尝试了很多组合:
searchPaths={application}/{profile}.properties
searchPaths={application}/**
searchPaths=/{application}/{profile}
searchPaths='{application}/{profile}'
searchPaths='{application}/{profile}.properties'
searchPaths='{application}'/'{profile}'
(我尝试了基于spring云配置searchpaths答案的单引号想法)
但他们都不为我工作。我应该如何配置 searchPaths
为了达到我的目的?提前谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!