微服务不从 spring-cloud-config-server 微服务获取属性
microservice doesn't fetch properties from spring-cloud-config-server microservice
我想用 spring 云配置服务器构建一个简单的微服务应用程序。我正在使用 Github 存储库来存储我的配置文件。目前,我有两个非常简单的微服务。其中之一是云配置服务器,它从 Github 上的远程仓库检索属性。在此微服务的主要 class 中,我添加了 @EnableConfigServer 注释,并在 application.properties 文件中提供了几个属性:
spring.application.name=cloud-config-server
server.port=8888
spring.cloud.config.server.git.uri=*Remote repo URI*
spring.cloud.config.server.git.username=*Username*
spring.cloud.config.server.git.password=*Password*
spring.cloud.config.server.git.clone-on-start=true
如果我访问 http://localhost:8888/cloud-config-server/default 一切正常,我的 spring 云配置服务器会成功检索属性。
在我的第二个微服务中,我添加了 bootstrap.properties 和 2 个属性来连接到 cloud-config-server:
spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.name=cloud-config-server
而且我还添加了这个依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
不幸的是,我的微服务没有从 cloud-config-server 检索属性。当我尝试通过 @Value 注释使用 属性 时,出现错误:
注入自动装配的依赖项失败;嵌套异常是 java.lang.IllegalArgumentException:无法解析值“${test.text}
中的占位符 'test.text'
我确定,我的 属性 名字“test.text”没有打错。
我已经解决了我的问题。 Bootstrap.properties 默认不再启用文件。您可以通过添加新的依赖项来启用它:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
或者,您可以删除 bootstrap.properties 文件并在 application.properties 文件中提供这些属性
spring.config.import=configserver:*URI to your cloud config server*
spring.cloud.config.name=*Your cloud config server name*
在客户端application.properties中,您不能使用服务器名称,而是客户端应用程序名称
spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.name=applicationname
<spring-cloud.version>2020.0.3-SNAPSHOT</spring-cloud.version>
对于 spring 云和
<version>2.5.0-SNAPSHOT</version>
用于 spring 引导。
也在 application.properties 文件中:
spring.config.cloud.uri=htp://localhost:8888
spring.config.import=optional:configserver:htp://localhost:8888
这些应该可以像解决我的问题一样解决您的问题。
我想用 spring 云配置服务器构建一个简单的微服务应用程序。我正在使用 Github 存储库来存储我的配置文件。目前,我有两个非常简单的微服务。其中之一是云配置服务器,它从 Github 上的远程仓库检索属性。在此微服务的主要 class 中,我添加了 @EnableConfigServer 注释,并在 application.properties 文件中提供了几个属性:
spring.application.name=cloud-config-server
server.port=8888
spring.cloud.config.server.git.uri=*Remote repo URI*
spring.cloud.config.server.git.username=*Username*
spring.cloud.config.server.git.password=*Password*
spring.cloud.config.server.git.clone-on-start=true
如果我访问 http://localhost:8888/cloud-config-server/default 一切正常,我的 spring 云配置服务器会成功检索属性。
在我的第二个微服务中,我添加了 bootstrap.properties 和 2 个属性来连接到 cloud-config-server:
spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.name=cloud-config-server
而且我还添加了这个依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
不幸的是,我的微服务没有从 cloud-config-server 检索属性。当我尝试通过 @Value 注释使用 属性 时,出现错误:
注入自动装配的依赖项失败;嵌套异常是 java.lang.IllegalArgumentException:无法解析值“${test.text}
中的占位符 'test.text'我确定,我的 属性 名字“test.text”没有打错。
我已经解决了我的问题。 Bootstrap.properties 默认不再启用文件。您可以通过添加新的依赖项来启用它:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
或者,您可以删除 bootstrap.properties 文件并在 application.properties 文件中提供这些属性
spring.config.import=configserver:*URI to your cloud config server*
spring.cloud.config.name=*Your cloud config server name*
在客户端application.properties中,您不能使用服务器名称,而是客户端应用程序名称
spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.name=applicationname
<spring-cloud.version>2020.0.3-SNAPSHOT</spring-cloud.version>
对于 spring 云和
<version>2.5.0-SNAPSHOT</version>
用于 spring 引导。
也在 application.properties 文件中:
spring.config.cloud.uri=htp://localhost:8888
spring.config.import=optional:configserver:htp://localhost:8888
这些应该可以像解决我的问题一样解决您的问题。