我的目标是将自定义PropertySource添加到spring-cloud-server。我想要实现的是在spring-cloud-config-client应用程序中从该自定义源获取一些自定义属性。
根据Adding environment repository in spring-config-server的建议,我创建了spring-cloud-config-server
申请和单独的项目spring-cloud-config-custom
。第二个是基于spring-cloud-consul-config代码。因此,我已经创建了所有必需的类,例如CustomPropertySource
,CustomPropertySourceLocator
,CustomConfigBootstrapConfiguration
等等,并在spring.factories
中对其进行了配置。
最后,我在spring-cloud-config-custom
内向spring-cloud-config-server
添加了maven依赖项。
到目前为止一切顺利。一切都很好。当我启动服务器时,我可以看到我的CustomPropertySource
位于注入EnviromentRepository
的{{1}} bean内的propertySources列表中。
问题:当我向EnvironmentController
发送GET请求时(在@RequestMapping("/{name}/{profiles}/{label:.*}")
中),正在使用注入的EnvironmentController
bean来查找请求的属性源({{ 1}}方法)。
不幸的是我的财产来源在这里找不到。为什么呢?
我花了很多时间来调试它。我发现存储库委托EnviromentRepository
方法调用其他存储库:repository.findOne(name, profiles, label)
将其委托给findOne()
。在此委托中,findOne()方法不会使用MultipleJGitEnvironmentRepository
primary注入到控制器的propertySources。它使用新的PropertySource列表和新的单独SpringApplication创建新的环境存储库。最后,此列表不包含NativeEnvironmentRepository
,这就是EnviromentRepository
在结果CustomPropertySource
对象中返回空propertySources的原因。
findOne()
或Environment
CustomPropertySourceLocator
(和/或ConsulPropertySourceLocator
)(自动装配/自举)
spring-cloud-config-server
(说&#34;不同&#34;我的意思是所有Git,Consul和Zookeeper)?< / LI>
醇>
答案 0 :(得分:2)
您正在做的是向配置服务器本身添加属性源,而不是它所服务的配置。将spring-boot-starter-actuator
添加到配置服务器并查看/env
会显示:
{
"profiles": [
],
"server.ports": {
"local.server.port": 8888
},
"bootstrapProperties:custom": {
"test.prop3": "CUSTOM-VALUE-3",
"test.prop2": "CUSTOM-VALUE-2",
"test.prop1": "CUSTOM-VALUE-1"
},
}
要添加将由配置服务器提供的内容,您必须实现EnvironmentRepository
。
对EnvironmentRepository
复合 var s=ExcelApp.ActiveSheet.Cells(1,6).Value;
的支持为recently added。