Spring云配置服务器 - 如何在EnvironmentEncryptorEnvironmentRepository

时间:2016-12-21 16:54:12

标签: spring-cloud spring-cloud-config

我的目标是将自定义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代码。因此,我已经创建了所有必需的类,例如CustomPropertySourceCustomPropertySourceLocatorCustomConfigBootstrapConfiguration等等,并在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的原因。

  1. 我做错了吗?
  2. findOne()Environment
  3. 应该使用CustomPropertySourceLocator(和/或ConsulPropertySourceLocator)(自动装配/自举)
  4. spring-cloud-config-server可以通过REST接口同时提供多种不同类型的spring-cloud-config-server(说&#34;不同&#34;我的意思是所有Git,Consul和Zookeeper)?< / LI>

1 个答案:

答案 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