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

相关推荐
mldong4 小时前
C# 开发者也有自己的轻量工作流引擎了:NuGet 装包,5 分钟跑通一条审批流
后端·c#·.net
梁云亮5 小时前
spring整合Junit4
spring
爱学堂IT分享6 小时前
鹤翔老师pmp项目管理培训认证考试课 (直播录播题库送学时证明)【共58课时】-51CTO学堂
后端
王的宝库6 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
码事漫谈7 小时前
类型即世界:一个 C++ 程序员的本体论入门
后端
Rain的Java大神之路7 小时前
JavaWeb开发如何解决跨域问题
java·前端·后端·nginx·web安全·面试·运维开发
那个松鼠很眼熟w8 小时前
4.Spring-Ai入门案例
java·人工智能·spring
IT_陈寒9 小时前
Python的多线程居然是个假把式?搞清GIL让我少熬三天夜
前端·人工智能·后端
明月_清风9 小时前
位图与布隆过滤器:海量数据下的"存在性判断"艺术
前端·后端·算法
明月_清风9 小时前
Hash 表从入门到精通:Go 实战与工程细节
前端·后端·算法