政务网站开发武汉seo创造者
目录
一、问题现象
二、解决方案
三、运行结果
四、代码地址
一、问题现象
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: devapplication:name: config-servercloud:config:label: newBranchserver:git:uri: https://gitee.com/fzggz/springcloudsearchPaths: spring-cloud-config-filetimeout: 60username: ***password: ***default-label: newBranch eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/ bobo:user:name: boboage: 18
configClient的bootstrap.yml
spring:application:name: config-clientcloud:config:uri: http://127.0.0.1:8030 # 直接连接 Config-Serverprofile: devlabel: newBranch3discovery: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