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

相关推荐
驰羽6 分钟前
[GO]GORM 常用 Tag 速查手册
开发语言·后端·golang
楚韵天工15 分钟前
宠物服务平台(程序+文档)
java·网络·数据库·spring cloud·编辑器·intellij-idea·宠物
AntBlack43 分钟前
虽迟但到 :盘一盘 SpringAI 现在发展得怎么样了?
后端·spring·openai
ss2732 小时前
手写Spring第4弹: Spring框架进化论:15年技术变迁:从XML配置到响应式编程的演进之路
xml·java·开发语言·后端·spring
兩尛2 小时前
Spring面试
java·spring·面试
舒一笑2 小时前
🚀 PandaCoder 2.0.0 - ES DSL Monitor & SQL Monitor 震撼发布!
后端·ai编程·intellij idea
Java中文社群2 小时前
服务器被攻击!原因竟然是他?真没想到...
java·后端
helloworddm3 小时前
Orleans 流系统握手机制时序图
后端·c#
开心-开心急了4 小时前
Flask入门教程——李辉 第三章 关键知识梳理
后端·python·flask
Code blocks5 小时前
GB28181视频服务wvp部署(一)
java·spring boot·后端