[英]Spring Cloud Config Server Could not resolve placeholder
我将spring-cloud-config-server添加到我的堆栈中,希望为不同的spring配置文件(即开发,暂存和生产)加载不同的配置集。
我的配置服务器应用程序从端口8888开始,直接从私有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}"
我在客户端应用程序中将活动配置文件设置为“开发”。 配置服务器上的属性文件名为:
myapp-development.properties
myapp-staging.properties
myapp-production.properties
我当然希望客户端应用程序从服务器获取配置(我可以看到这种情况),然后该属性在启动时可供客户端应用程序使用,但事实并非如此。 它像在值注释中指定默认值一样简单吗? 还是我忽略了更基本的东西? 我按照本指南的说明进行操作,并且我的配置服务器指向上面提到的git存储库:
http://www.baeldung.com/spring-cloud-configuration
提前致谢。
您在客户端应用程序中错误地设置了凭据。
它应该是
spring.cloud.config.username=myConfigServerUserName
spring.cloud.config.password=myConfigServerPassword
而不是spring.security.user.name
和spring.security.user.password
(在配置服务器应用程序中使用)。
参见: http : //cloud.spring.io/spring-cloud-static/spring-cloud-config/2.0.1.RELEASE/single/spring-cloud-config.html#_security_2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.