springcloud configClient获取configServer信息失败导致启动configClient注入失败报错解决

目录

一、问题现象

二、解决方案

三、运行结果

四、代码地址


一、问题现象

springcloud configClient获取configServer信息失败导致启动configClient注入失败

报错堆栈信息

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.testController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'version' in value "${version}"

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'version' in value "${version}"

二、解决方案

经排查,原因为gitee配置文件名config-dev.properties与服务注册名不一致导致,bootstrap.yml配置了configServer地址之后,configClient从gitee中获取配置文件的时候指定了profile(dev哪个环境)以及label(newBranch4分支),但是configServer获取配置文件的时候会批量加载所有分支的配置文件信息,因此configClient和configServer配置文件关联必须由服务名以及文件名关联,因此在修改gitee中配置文件的文件名为服务名之后,configClient启动成功,并成功获取gitee中相关配置信息。

gitee中配置文件内容

git clone https://gitee.com/fzggz/springcloud.git

configServer工程的bootstrap.yml

复制代码
spring:
  profiles:
    active: dev
  application:
    name: config-server
  cloud:
    config:
      label: newBranch
      server:
        git:
          uri: https://gitee.com/fzggz/springcloud
          searchPaths: spring-cloud-config-file
          timeout: 60
          username: ***
          password: ***
          default-label: newBranch
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
bobo:
  user:
    name: bobo
    age: 18

configClient的bootstrap.yml

复制代码
spring:
  application:
    name: config-client
  cloud:
    config:
      uri: http://127.0.0.1:8030  # 直接连接 Config-Server
      profile: dev
      label: newBranch3
      discovery:
        enabled: false
#        enabled: true
#        service-id: config-server
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

三、运行结果

configClient配置客户端代码,启动configClient后,读取configServer中读取到的配置文件信息,通过文件名,profile,label等映射关系找到version,通过@Value注入version,controller中获取

复制代码
package com.ggz.configclient.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author ggz on 2025/4/1
 */
@RefreshScope
@RestController
public class TestController {

    @Value("${version}")
    private String version;

    @RequestMapping("/version")
    public String version() {
        return version;
    }
}

四、代码地址

直接导入,启动eureka和configServer以及configClient即可

https://github.com/GeGuozhi/SpringCloudDemo.git

希望有用的同时大家能帮忙能点亮一个小小的star

相关推荐
你驴我38 分钟前
WhatsApp 消息撤回与编辑的幂等性设计实践
java·服务器·前端·后端·python
一缕清烟在人间42 分钟前
HarmonyOS开发实战:小分享-TextEditPage文字编辑器——Header+TextArea+工具栏
后端·华为·harmonyos·鸿蒙
程序员cxuan1 小时前
Opus 5 深夜炸场,价格还挺香。。。
人工智能·后端·程序员
北冥you鱼1 小时前
Go 语言新手扫盲:指针 * 和 & 使用场景详解
开发语言·后端·golang
青山木1 小时前
Hot 100 ---腐烂的橘子
java·数据结构·后端·算法·leetcode·广度优先
卷无止境1 小时前
Python的collections模块:那些被低估的"瑞士军刀"
后端·python
卷无止境2 小时前
Python的方法解析顺序:一场关于继承顺序的精妙设计
后端·python
宁&沉沦2 小时前
Chrome 扩展 Manifest 字段版本支持一览(全量)
前端·后端·编辑器
吃饱了得干活2 小时前
缓存与数据库一致性:从理论到实战
java·后端·面试
520拼好饭被践踏2 小时前
JAVA+Agent学习day22
java·开发语言·后端·学习