微服务不从 spring-cloud-config-server 微服务获取属性

Posted

技术标签:

【中文标题】微服务不从 spring-cloud-config-server 微服务获取属性【英文标题】:microservice doesn't fetch properties from spring-cloud-config-server microservice 【发布时间】:2021-03-01 00:06:42 【问题描述】:

我想用 spring 云配置服务器构建一个简单的微服务应用程序。我正在使用 Github 存储库来存储我的配置文件。目前,我有两个非常简单的微服务。其中之一是 cloud-config-server,它从 Github 上的远程仓库检索属性。在这个微服务的主类中,我添加了@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 云配置服务器成功检索属性。

在我的第二个微服务中,我添加了带有 2 个属性的 bootstrap.properties 以连接到 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”没有打错。

【问题讨论】:

请包含版本 Spring boot 2.4.0 和 Spring Cloud 2020.0.0-SNAPSHOT 见***.com/questions/64880039/… 这里详细分享了解决方案: ***.com/a/66533416/10791378 【参考方案1】:
<spring-cloud.version>2020.0.3-SNAPSHOT</spring-cloud.version>

春云和

<version>2.5.0-SNAPSHOT</version> 

用于弹簧靴。

也在 application.properties 文件中:

spring.config.cloud.uri=htp://localhost:8888
spring.config.import=optional:configserver:htp://localhost:8888

这些应该可以解决您的问题,就像解决我的问题一样。

【讨论】:

【参考方案2】:

在 Client application.properties 中,您不能使用服务器名称,而是客户端应用程序名称

spring.cloud.config.uri=http://localhost:8888
spring.cloud.config.name=applicationname

【讨论】:

【参考方案3】:

我已经解决了我的问题。默认情况下不再启用 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*

【讨论】:

仅供参考,如果有人仍然对此问题感兴趣,SpringBoot 2.4 或更高版本建议使用 spring.config.import 属性作为“默认方式”,而不是使用 bootstrap.properties + spring-cloud-starter -bootstrap 部门。请参阅here 了解更多信息。

以上是关于微服务不从 spring-cloud-config-server 微服务获取属性的主要内容,如果未能解决你的问题,请参考以下文章

干货分享微服务spring-cloud(7.配置中心spring-cloud-config)

不从父级继承的 Spring Cloud 配置云

为什么不用原生Spring-Cloud-Config

微服务不从 spring-cloud-config-server 微服务获取属性

为啥 spring-cloud-config 示例测试需要旋转配置服务器?

spring-cloud-config 服务器-org.springframework.cloud.config.server.environment.NoSuchRepositoryExceptio