Spring Cloud Config 客户端未从服务器获取值

Spring Cloud Config client doesn't get values from server

我一直在关注 this tutorial from Baeldung in setting up a Spring Cloud Config server and client. I believe I have set up the server correctly since going to http://localhost:8888/service-config/development/master 似乎会正确显示 json 和 user.role 定义:

{"name":"service-config","profiles":["development"],"label":"master","version":"d30a6015a6b8cb1925f6e61cee22721f331e5783","state":null,"propertySources":[{"name":"file:///C:.../git/service-config-data/service-config-development.properties","source":{"user.role":"Developer"}},{"name":"file:///C:.../git/service-config-data/service-config.properties","source":{"user.role":"Developer"}}]}

但是,我似乎无法将 Spring Cloud Config 客户端正确连接到服务器 - 客户端无法 运行 无法解决 @Value("${user.role}") 注释上的占位符错误。我试过向注释添加默认值,然后手动刷新值(使用 @refreshscope 注释),但无济于事。

我通过 运行 使用带有 --debug --trace 标志的工具查看了调试和跟踪日志,但我找不到 when/if 客户端正在调用服务器并且服务器实际上正在寻找哪个 config-data .properties 文件。我对如何进行有点迷茫。


这是我的服务器 application.properties:

spring.application.name=service-config
server.port=8888
spring.cloud.config.server.git.uri=file:///${user.home}/git/service-config-data
spring.cloud.config.server.git.clone-on-start=false
spring.security.user.name=root
spring.security.user.password=toor

service-config-data 文件夹中,有以下文件:

user.role=Developer

我试过名为 service-config.properties、service-config-client.properties、service-config-development.properties 和 service-config-client-development.properties 的文件, 其中 none 似乎挺过了 user.role.

这是我的客户:

@SpringBootApplication
@RestController
@RefreshScope
public class ServiceConfigClient {

    @Value("${user.role:unknown}")
    private String role;

    @RequestMapping(
      value = "/whoami/{username}", 
      method = RequestMethod.GET, 
      produces = MediaType.TEXT_PLAIN_VALUE)
    public String whoami(@PathVariable("username") String username) {
        return String.format("Hello! You're %s and you'll become a(n) %s...\n", username, role);
    }
}

还有我的客户bootstrap.properties:

spring.application.name=service-config-client
spring.profiles.active=development
spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.username=root
spring.cloud.config.password=toor

management.endpoints.web.exposure.include=*

如何正确地将客户端连接到服务器,以便成功拉取配置数据?谢谢。

配置服务器中的客户端服务名称和相应的 属性 来源存在混淆。

您需要执行以下操作之一:

  1. 更改客户端服务名称:
//client bootstrap.properties
spring.application.name=service-config
  1. 将 git 存储库中的文件夹名称从 service-config 更改为 service-config-client

我的问题已通过向 service-config-client 的 bootstrap.properties 添加 spring.cloud.config.name=service-config 以及向 spring-cloud-config-server 添加和删除 spring-cloud-config-server 得到解决=14=]