Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring云配置服务器无法解析占位符_Java_Spring Boot_Docker Compose_Spring Cloud_Spring Cloud Config - Fatal编程技术网

Java Spring云配置服务器无法解析占位符

Java Spring云配置服务器无法解析占位符,java,spring-boot,docker-compose,spring-cloud,spring-cloud-config,Java,Spring Boot,Docker Compose,Spring Cloud,Spring Cloud Config,我将SpringCloudConfigServer添加到我的堆栈中,希望为不同的spring概要文件(即开发、登台和生产)加载不同的配置集 我的配置服务器应用程序启动于端口8888,直接从私有gitlab存储库获取配置,并具有安全性。我通过手动点击并检查返回的属性是否正确来测试它。到目前为止还不错 我将有几个“客户端”应用程序,我想从我的配置服务器中使用这些属性,但现在我只尝试一个。为了测试它,我放了一个 @Value("${some.property}") private string som

我将SpringCloudConfigServer添加到我的堆栈中,希望为不同的spring概要文件(即开发、登台和生产)加载不同的配置集

我的配置服务器应用程序启动于端口8888,直接从私有gitlab存储库获取配置,并具有安全性。我通过手动点击并检查返回的属性是否正确来测试它。到目前为止还不错

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

@Value("${some.property}")
private string someProperty;
在客户端应用程序中的我的一个web资源中。此属性不在客户端应用程序的任何属性文件中(不知道这是否是问题所在-但如果是,则似乎有限制)

我还将客户端应用程序指向配置服务器。配置服务器和客户端应用程序的配置都位于它们的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
当然,我希望客户端应用程序从服务器获取配置(我可以看到这种情况发生),然后在客户端应用程序启动时,该属性可用于客户端应用程序,但情况似乎并非如此。它是否像在值注释中指定默认值那样简单?还是我忽略了一些更基本的东西?我遵循了本指南fwiw,我的配置服务器指向一个git存储库,正如我前面提到的:


提前感谢。

您在客户端应用程序中设置的凭据不正确

应该是

spring.cloud.config.username=myConfigServerUserName
spring.cloud.config.password=myConfigServerPassword
而不是
spring.security.user.name
spring.security.user.password
(在配置服务器应用程序中使用)

见:
您在客户端应用程序中设置的凭据不正确

应该是

spring.cloud.config.username=myConfigServerUserName
spring.cloud.config.password=myConfigServerPassword
而不是
spring.security.user.name
spring.security.user.password
(在配置服务器应用程序中使用)

见:

“在…从服务器获取配置”日志发生在获取数据之前,而不是之后和205-这不是响应代码。(不知道这是什么,请检查记录器格式)。一般来说,在这个日志消息之后,您应该看到“定位环境…”,然后是“定位属性源…”,以及有关属性的信息。一般来说,您的假设和理解是正确的,不需要任何默认值。看起来它应该是简单的和被忽略的。能否在github中提供src代码(可以是一个回购协议中的所有内容)?我会尽力解决你的问题谢谢。。因此,输出并不能保证获取配置。。我懂了。好吧,我不能分享整个代码库,但我(希望)在一些GIST中插入了相关的位。。。。Config service:Client service:Resource with the rogue变量(仅用于测试目的,显然我们甚至没有做到这一步):请询问任何特定的信息。抱歉耽搁了!提前谢谢。哦,我在原始问题中提到的3个属性文件都只包含1个属性(some.property)。我做错了什么!:>回答。如果您没有为测试共享源发明其他名称-根本原因在于客户端应用程序名称。“在…从服务器获取配置”日志发生在获取数据之前,而不是之后和205-它不是响应代码。(不知道这是什么,请检查记录器格式)。一般来说,在这个日志消息之后,您应该看到“定位环境…”,然后是“定位属性源…”,以及有关属性的信息。一般来说,您的假设和理解是正确的,不需要任何默认值。看起来它应该是简单的和被忽略的。能否在github中提供src代码(可以是一个回购协议中的所有内容)?我会尽力解决你的问题谢谢。。因此,输出并不能保证获取配置。。我懂了。好吧,我不能分享整个代码库,但我(希望)在一些GIST中插入了相关的位。。。。Config service:Client service:Resource with the rogue变量(仅用于测试目的,显然我们甚至没有做到这一步):请询问任何特定的信息。抱歉耽搁了!提前谢谢。哦,我在原始问题中提到的3个属性文件都只包含1个属性(some.property)。我做错了什么!:>回答。如果你没有为测试共享源发明其他名称-根本原因是客户端应用程序名称。正如你上面提到的,你是对的-我确实发明了名称来模糊它们,但我在要点上犯了一个错误。客户端应用程序的名称=myapp-development.properties的“myapp”部分。我将其命名为myClientApp只是为了清楚地表明,是客户机在使用配置。它有一个单字的名称(为了论证起见,是myapp),它与属性文件名的第一部分匹配…@DaisyDay我已经编辑了答案,希望这次我解决了你的问题:)你是一个传奇。非常感谢。我这方面的愚蠢疏忽!现在一切正常。再次感谢:)正如你上面提到的,你说得很对——我确实发明了名字来掩盖它们,但我在要点上犯了一个错误。客户端应用程序的名称=myapp-development.properties的“myapp”部分。我将其命名为myClientApp只是为了清楚地表明,是客户机在使用配置。它有一个单字的名称(为了参数起见是myapp),并且它与属性文件名的第一部分匹配…@DaisyDay我已经编辑了答案,ho