一、SpringCloud Config

上篇文章中我们介绍了Spring cloud GateWay网关的使用,包括路由转发、服务降级、限流等,所有的配制都配制在了项目中的 application.yml 文件中,如果其中修改配制文件就要进行重启,如果生产获取怎么可能随便重启呢,此时就需要分布式配制中心来统一管理我们的配制信息了。

上篇文章的地址:https://blog.csdn.net/qq_43692950/article/details/122023920

SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。

SpringCloud Config分为服务端和客户端两部分。

服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口

客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。

二、搭建git仓库

SpringCloud Config 默认使用 GIT来管理配制文件也可以使用 SVN,本文我们使用GIT来做演示,是要使用的阿里的 码云 gitee 仓库。

在gitee 中新建仓库:

上面我的仓库叫 cloud-config ,创建好后,我们可以git clone 拉取下来,创建application目录,并在其中创建 application-consumer.yml 写入以下内容:

param: text: abc14name: 测试




到此 git 上的仓库和配制文件我们就已经准备好了。

三、SpringCloud Config 服务端搭建

还是和前面文章一样,新建一个springboot的module,加入config-server的依赖:

SpringCloud 我们使用的时H版的SR9版本

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

配制文件修改:

server:port: 8070spring:application:name:  config-centercloud:config:server:git:
#          uri: git@gitee.com:app94/cloud-config.git #GitHub上面的git仓库名字uri: https://gitee.com/app94/cloud-config.git #GitHub上面的git仓库名字username: ${username}password: ${password}####搜索目录search-paths:- application####读取分支label: mastereureka:client:register-with-eureka: truefetchRegistry: trueservice-url:defaultZone: http://eureka1:8010/eureka,http://eureka2:8011/eureka

注意上面username和password 换成你码云中的用户名密码。

主启动类:

@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class ConfigCenterApplication {public static void main(String[] args) {SpringApplication.run(ConfigCenterApplication.class, args);}
}

启动config server端项目

四、SpringCloud client 客户端搭建

创建一个config client端的springboot的 module,加入下面依赖:

 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>

配制文件修改,注意下面内容要写在bootstrap.yml中,在服务前就读取配制。

server:port: 8081spring:application:name: config-clientcloud:#Config客户端配置config:label: master #分支名称name: application #配置文件名称profile: consumer #读取后缀名称   上述3个综合:master分支上application -consumer.yml的配置文件被读取
#      uri: http://localhost:8070 #配置中心地址kdiscovery:enabled: trueservice-id: CONFIG-CENTEReureka:client:register-with-eureka: truefetchRegistry: trueservice-url:defaultZone: http://eureka1:8010/eureka,http://eureka2:8011/eurekamanagement:endpoint:shutdown:enabled: falseendpoints:web:exposure:include: "*"

上面可以通过uri 指定配制中心的地址,也可以使用 service-id 在注册中心中找配制中心。

主启动类:

@SpringBootApplication
@EnableEurekaClient
public class ConfigClientApplication {public static void main(String[] args) {SpringApplication.run(ConfigClientApplication.class, args);}
}

编写Properties

@Component
@ConfigurationProperties(prefix = "param")
@Data
public class ParamProperties {private String text;private String name;
}

编写测试接口:

@RestController
@RequestMapping("config")
public class ConfigController {@AutowiredParamProperties paramProperties;@GetMapping("/getConfig")public ResponseTemplate getConfig() {log.info("text: {}", paramProperties.getText());log.info("name: {}", paramProperties.getName());return ResSuccessTemplate.builder().build();}
}

下面启动client端,调用接口进行测试,浏览器输入http://localhost:8081/config/getConfig

已经读取到我们配制中心的内容,如果此时修改git上配制的信息,在请求接口呢:

再次调用接口,查看日志:

发现并没有刷新,下面我们说下如何刷新配制内容。

五、刷新配制内容

上面我们已经看到效果,在git中修改的内容,并不会反映到项目中,那这样配制中心岂不是很鸡肋,当然不是,我们只需修改下程序写法,和调用一个接口即可:

修改Properties,添加:@RefreshScope 注解

@Component
@ConfigurationProperties(prefix = "param")
@Data
@RefreshScope
public class ParamProperties {private String text;private String name;
}

重启项目,调用接口,查看打印日志:

我们刚才修改的内容已经读取出来了,下面我们修改git上的内容:

使用 PostMan 发送 post请求至:http://localhost:8081/actuator/refresh ,就是请求的config client 端的/actuator/refresh

如果请求不同,查看配制文件中是否加入以下配制:

再次访问上面的测试接口,查看参数是否变化:

参数已经变为最新的内容了,并且我们也没有重启客户端,实现在在线修改配制的功能。


喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!

SpringCloud H版 Config 配制中心讲解相关推荐

  1. SpringCloud H版 Config+Bus 实现全局配制刷新

    一.Spring cloud Bus 在上篇文章中我们介绍了Spring cloud config的使用,但是应该可以发现一个问题,就是我们在修改完 git 中的配制后,让每个服务生效,需要按个调用刷 ...

  2. 尚硅谷SpringCloud(H版alibaba)框架开发教程(大牛讲授spring cloud) 最详细的。

    尚硅谷SpringCloud(H版&alibaba)框架开发教程(大牛讲授spring cloud) 一. 从2.2.x和H版开始说起 二.关于Cloud各种组件的停更/升级/替换 三.微服务 ...

  3. SpringCloud(H版alibaba)之基本框架篇

    SpringCloud(H版&alibaba)之基本框架篇 什么是微服务 https://www.bilibili.com/video/BV18E411x7eT?p=14 视频内容 微服务和分 ...

  4. 最新的SpringCloud(H版Alibaba)技术(11-12初级部分,网关【Gateway】)

    文章目录 十一.zuul路由网关 十二.Gateway新一代网关 简介 三大核心概念 Route(路由) Predicate(断言) Filter(过滤) 总体 Gateway工作流程 入门配置 Ga ...

  5. 尚硅谷2020最新版周阳SpringCloud(H版alibaba)框架开发教程 学习笔记

    前言:今天看到周阳老师出了新课,十分欣喜,很喜欢周阳老师的讲课风格,内容也充实,我也算是周阳老师忠实粉丝啦. 新出的springcloud第二版很符合我现阶段的学习需求.但美中不足的是,目前只有视频资 ...

  6. springcloud H版+alibaba cloud4

    springcloud H版+alibaba cloud4 19,sleuth链路追踪 20,springcloud alibaba 21,nacos 22,sentinel 23,seata 19, ...

  7. 尚硅谷周阳老师2020年 SpringCloud(H版和Alibaba) 视频教程学习时整理的笔记记录和代码

    尚硅谷周阳老师2020年 SpringCloud(H版和Alibaba)视频教程学习时整理的笔记记录和代码 尚硅谷周阳老师SpringCloud(H版和Alibaba)学习.代码摘录,下面是各个mod ...

  8. SpringCloud H版之Eureka学习

    SpringCloud H版之Eureka学习 欢迎学习SpringCloud Netflix Eureka 什么是服务注册与发现 Eureka Server提供服务注册服务 EurekaClient ...

  9. SpringCloud( H版 alibaba )框架开发教程(中级)

    中级 编码五部曲: 建module 改pom 写yml 主启动 业务类 所有源码地址:https://gitee.com/xyy-kk_admin/spring-cloud 入门篇链接:https:/ ...

最新文章

  1. Java设计模式(十八):享元设计模式
  2. 经典论文复现 | InfoGAN:一种无监督生成方法
  3. android 浅复制与深复制
  4. IDEA中常用快捷键整理及重置快捷键
  5. 堆栈溢出从入门到提高
  6. perl学习之:函数总结
  7. 第六章网络安全技术与产品考试要点及真题分布
  8. Dave和Gunnar采访Lauren Egts:Raspberry Pi,Scratch等
  9. ssis 有条件拆分_SSIS条件拆分概述
  10. c语言高级程序设计第五版PDF,C语言高级编程.pdf
  11. css 宋体_6.CSS字体属性
  12. HDU4035 Maze 【树形DP】【期望DP】
  13. 数据增广Data Augmentation 动手学深度学习v2
  14. 软件开发过程中的一些感悟
  15. itextPdf pdf加水印
  16. 最新emlog看板娘插件合集
  17. Python量化策略风险指标
  18. 视频处理及MAX7456的图文解释
  19. MySQL8.0密码找回与权限刷新
  20. Excel表格规范录入数据

热门文章

  1. dagger2 android封装,Dagger2 Android应用:@Component和@Module
  2. 洛谷5197 USACO Grass Planting
  3. android11墓碑机制和addr2line使用
  4. Python入门(二十三)- 文件操作1
  5. 【论文翻译 - RFID】射频全息图:利用商业化产品对移动射频标签进行实时高精度追踪
  6. 第一年19元月租100g
  7. AutoCAD2006激活方法
  8. 单总线编程介绍(用于DS18B20)
  9. 计组高分笔记:【06】计算机组成原理概述 「单总线 | 双总线 | 三总线 | 总线仲裁 | 总线标准 | 总线定时 | 同步定时 | 异步定时 | 半同步通信 | 分离式通信」
  10. Dubbo系列(一)dubbo介绍和入门