Spring Cloud Config 配置Client读取不到server配置文件
发表于:2024-11-27 作者:热门IT资讯网编辑
编辑最后更新 2024年11月27日,学习Spring Cloud Config 的时候,很容易遇到各种各样的问题,这里我就把我遇到的:Client 端读取不到Server端的配置文件中的属性总结一下。首先我搭建了一个Eureka 注册中
学习Spring Cloud Config 的时候,很容易遇到各种各样的问题,这里我就把我遇到的:Client 端读取不到Server端的配置文件中的属性总结一下。
首先我搭建了一个Eureka 注册中心,这里就不着重介绍了,不知道的小伙伴可以
网上查资料!
1.搭建Config 配置中心
POM 文件:
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.7.RELEASE com.sg.config config-demo 0.0.1-SNAPSHOT config-demo Demo project for Spring Boot 1.8 Greenwich.SR2 org.springframework.cloud spring-cloud-config-server org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin
这里面Config用到的依赖是 spring-cloud-config-server ,其他自己看着引入即可
2.application.yml 的配置
server: port: 8095spring: application: name: config-demo cloud: config: server: git: uri: https://github.com/****/spring-cloud-demo.git username: password: search-paths: spring-cloud-demo-configeureka: client: service-url: defaultZone: http://127.0.0.1:8090/eureka/ register-with-eureka: true fetch-registry: true
Config Server 的配置主要是spring.cloud.config.server.git 下面的东西,其他按需配置即可。
3.Config Server 启动类
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.config.server.EnableConfigServer;@SpringBootApplication@EnableConfigServer@EnableDiscoveryClientpublic class ConfigDemoApplication { public static void main(String[] args) { SpringApplication.run(ConfigDemoApplication.class, args); }}
至此 Config Server 端就配置完成了。
4.配置Config Client 端
首先引入依赖
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.6.RELEASE com.sg.eureka.client eureka-client-demo 0.0.1-SNAPSHOT eureka-client-demo Demo project for Spring Boot 1.8 Greenwich.SR2 org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-test test com.sg.common spring-cloud-common 0.0.1-SNAPSHOT org.springframework.cloud spring-cloud-starter-config org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin
主要有关的依赖是 spring-cloud-starter-config ,其他的按需引入即可
5.application.yml 配置文件
server: port: 8091spring: application: name: eureka-client-demo cloud: config: profile: test uri: http://127.0.0.1:8095/ label: master discovery: enabled: true service-id: config-demoeureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://127.0.0.1:8090/eureka/### 端点控制management: endpoints: web: exposure: # 开启指定端点 include: hystrix.streamproject: name: hahha
启动类上什么配置也不用添加,就可以了,重要的一点:
1:如果用了Eureka ,则需要配置 spring.cloud.config.discovery.enable: true 和 spring.cloud.config.discovery.service-id: config-demo 这两个属性
6.读取Server中配置的属性
package com.sg.eureka.client.controller;import com.sg.common.vo.UserVO;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Configuration;import org.springframework.core.env.Environment;import org.springframework.web.bind.annotation.*;/** * @author liuhailong * @date 2019-08-08 */@RestController@RequestMapping(value = "users")@Configurationpublic class UserController { @Autowired private Environment environment; @Value("${project.name}") private String name; @GetMapping(value = "/config") public String getConfig(@RequestParam("key")String key){ return environment.getProperty(key); } @GetMapping(value = "/projectName") public String projectName(){ return name; }}
我这里用了 两种方式去读取配置文件中的内容
1:使用Spring core中的Environment 类 中的getProperty 可以取到
2:使用Spring 的 @Value("${project.name}") 注解
6.接下来验证一下:访问 http://localhost:8091/users/config?key=project.name 结果发现获取不到Config Server中配置的参数。