所以我最近学习了 Spring Cloud 这个很棒的配置服务,经过一番努力,我能够设置我们的分布式应用程序,多个节点从一个配置服务器读取配置属性。
然而,我不知道如何解决的一个问题是,即使大多数道具在多个节点上都是相同的,但某些道具需要本地版本,并且我不知道如何将本地道具与配置服务一起设置。
例如这是我的bootstrap.properties
,
spring.cloud.config.uri=${config.server:http://localhost:8888}
spring.application.name=worker
如果我在下面添加额外的道具bootstrap.properties
或在单独的application.properties
文件,我可以在执行器的环境端点下看到它们,如下所示,
configService:file:///home/me/work/config-test/worker.properties:
{
server.timeout: "100"
},
applicationConfig: [classpath:/application.properties]: {
server.timeout: "50"
},
在我的应用程序中server.timeout
现在将永远是 100,我不知道当我使用这样的集中配置服务时如何引用本地值?
好的,经过更多研究,我找到了答案。从https://docs.pivotal.io/spring-cloud-services/config-server/configuration-clients.html
Spring 应用程序可以使用配置服务器作为属性源。来自配置服务器的属性将覆盖本地定义的属性(例如通过类路径中的 application.yml)。
因此,正确的做法是将任何客户端属性保留在配置服务之外。对我来说,这也意味着对于此类属性,没有办法设置默认值,只有在存在客户端值时才会覆盖默认值,这会很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)