Spring Boot 应用程序未从 Spring Cloud Config Server 读取属性值

Posted

技术标签:

【中文标题】Spring Boot 应用程序未从 Spring Cloud Config Server 读取属性值【英文标题】:Spring Boot application not reading properties value from Spring Cloud Config Server 【发布时间】:2021-03-22 11:47:23 【问题描述】:

我已经配置了一个 Spring Cloud Config Server,它从我们的 git 存储库中提取应用程序值。我可以通过浏览 spring cloud url [http://localhost:8012/XXXAPIConfigServer/default] 来确认它是否正确获取了值

现在在我的客户端微服务(users-ws)中,我添加了以下依赖项和配置

bootstrap.yml

spring:
  cloud:
    config:
      uri: http://localhost:8012
      name: XXXAPIConfigServer
  profiles:
    active: default

application.yml

jwt:
   secretKey: v++?c2HNyw^Eq#Ba=nFTYNRuSF1bKx
   prefix: Bearer
   expirationAfterDays: 1

当我运行客户端用户服务时,我得到的不是expirationAfterDays2,而是1

另外,我通过调用 jwtclass 来读取这些 jwt 值 JwtConfig

package com.company.abc.api.users.configuration;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;

@Configuration
@ConfigurationProperties(prefix = "jwt")
public class JwtConfig 

   private String secretKey;
   private String prefix;
   private int expirationAfterDays;
   private String loginUrl;

   public JwtConfig() 

   public String getSecretKey() 
      return secretKey;
   

   public void setSecretKey(String secretKey) 
      this.secretKey = secretKey;
   

   public String getPrefix() 
      return prefix;
   

   public void setPrefix(String prefix) 
      this.prefix = prefix;
   

   public int getExpirationAfterDays() 
      return expirationAfterDays;
   

   public void setExpirationAfterDays(int expirationAfterDays) 
      this.expirationAfterDays = expirationAfterDays;
   

   public String getLoginUrl() 
      return loginUrl;
   

   public void setLoginUrl(String loginUrl) 
      this.loginUrl = loginUrl;
   

   public String getAuthorizationHeader() 
      return HttpHeaders.AUTHORIZATION;
   



这是来自客户端 api 用户服务的日志文件:(https://justpaste.it/8aeop)

【问题讨论】:

看看你的 spring boot 启动日志,看看发生了什么。 你用的是什么版本? @spencergibb, spring-cloud-config-server => 3.0.0-M6。对于spring-cloud-start-config,我没有在pom.xml中添加版本所以我猜是最新版本2.2.6 由于您不确定您的客户端版本,并且没有从配置服务加载配置的操作,您可以查看文档here,并通过设置spring.cloud.bootstrap.enabled=true手动启用引导或者在你的 POM 文件中包含新的spring-cloud-starter-bootstrap 我会进一步深入研究配置。相同的配置应用于 Zuul API GW,它从配置服务器获取值。 【参考方案1】:

我找到了导致问题的原因。我有与 Zuul API Gateway 相同的 bootstrap.yml 配置,我注意到我使用的是以下版本:

spring-boot-starter-parent => 2.3.6.RELEASE
sprint-cloud.version => Hoxton.SR9

我正在使用的用户 Web 服务中的位置(不工作)

spring-boot-starter-parent => 2.4.0
sprint-cloud.version => 2020.0.0-SNAPSHOT

【讨论】:

以上是关于Spring Boot 应用程序未从 Spring Cloud Config Server 读取属性值的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 库项目未从 /conf 文件夹中选择外部文件配置

Spring Boot、Spring Cloud AWS 和 AWS SQS 未从队列中读取

Spring Boot 服务未从存储库执行 deleteBy

前端 (HTML) 未从 Microsoft Azure 中的 mysql 数据库获取 Spring Boot 应用程序中的数据

未从 application.properties 中提取 Spring Boot JOOQ sql 方言

spring cloud config客户端未从配置服务器加载配置