java - Spring Cloud 配置服务器无法解析占位符

标签 java spring-boot docker-compose spring-cloud spring-cloud-config

我已将 spring-cloud-config-server 添加到我的堆栈中,希望为不同的 spring 配置文件(即开发、登台和生产)加载不同的配置集。

我的配置服务器应用程序在端口 8888 上启动,直接从私有(private) gitlab 存储库获取配置并具有安全性。我通过手动点击它并检查是否返回正确的属性来对此进行测试。到目前为止一切顺利。

我将有几个“客户端”应用程序,我想使用它们从配置服务器获取属性,但现在我只尝试使用其中一个。为了测试它,我放了一个

@Value("${some.property}")
private string someProperty;

在客户端应用程序中我的网络资源之一中。此属性不在任何客户端应用程序的属性文件中(想知道这是否可能是问题 - 但如果是,它似乎具有限制性)。

我还将客户端应用程序指向配置服务器。这两个应用程序(配置服务器和客户端应用程序)的配置都位于其 bootstrap.properties 文件中,以确保它们在进程的早期加载。

事实上,我的两个应用程序都容器化在 Docker 镜像中,并且由 docker-compose.yml 文件启动。我实际上已经将其设置为客户端应用程序在启动之前等待配置服务器运行。

在客户端应用程序启动期间,我可以看到它从配置服务器获取配置:

| 20:12:50.692 [main] INFO  o.s.c.c.c.ConfigServicePropertySourceLocator.getRemoteEnvironment 205 - Fetching config from server at : http://config-server:8888

205 似乎很成功。

但是,客户端应用程序启动失败:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'exampleResource': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'some.property' in value "${some.property}"

我在客户端应用程序中将 Activity 配置文件设置为“开发”。配置服务器上的属性文件命名为:

myapp-development.properties
myapp-staging.properties
myapp-production.properties

我当然希望客户端应用程序从服务器获取配置(我可以看到发生的情况),然后该属性在客户端应用程序启动时可供客户端应用程序使用,但情况似乎并非如此。就像在值注释中指定默认值一样简单吗?或者我忽略了一些更基本的东西?我遵循了本指南 fwiw,我的配置服务器指向 git 存储库,正如我上面提到的:

http://www.baeldung.com/spring-cloud-configuration

提前致谢。

最佳答案

您在客户端应用程序中错误地设置了凭据。

应该是

spring.cloud.config.username=myConfigServerUserName
spring.cloud.config.password=myConfigServerPassword

而不是spring.security.user.namespring.security.user.password(在配置服务器应用程序中使用)。

参见: http://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.0.1.RELEASE/single/spring-cloud-config.html#_security_2

关于java - Spring Cloud 配置服务器无法解析占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51698178/

相关文章:

java - 寻找与 .NET 的 Snippet Compiler 等效的 Java

java - 如何在文本文件中打印汉字

spring-boot - Spring云网关中如何添加Pre Filter

docker - 在docker-compose.yml中为自备docker注册表编写的内容

docker - 推荐的方法来处理Dockerfile中的空数据库与现有数据库

java - MVP 到 MVVM Android

java - 确定用户输入的句子中的第二个单词

java - 无法使用主键以外的索引从 aerospike 集中读取一条记录

linux - Spring Boot 发送邮件

Docker 脚本首次运行时未连接(sql 转储)