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=*
如何正确地将客户端连接到服务器,以便成功拉取配置数据?谢谢。
配置服务器中的客户端服务名称和相应的 属性 来源存在混淆。
您需要执行以下操作之一:
- 更改客户端服务名称:
//client bootstrap.properties
spring.application.name=service-config
- 将 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=]
我一直在关注 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=*
如何正确地将客户端连接到服务器,以便成功拉取配置数据?谢谢。
配置服务器中的客户端服务名称和相应的 属性 来源存在混淆。
您需要执行以下操作之一:
- 更改客户端服务名称:
//client bootstrap.properties
spring.application.name=service-config
- 将 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=]