spring cloud config 配置文件更新
Spring Cloud Config Server 作为配置中心服务端
- 拉取配置时更新 git 仓库副本,保证是最新结果
- 支持数据结构丰富,yml, json, properties 等
- 配合 eureke 可实现服务发现,配合 cloud bus 可实现配置推送更新
- 配置存储基于 git 仓库,可进行版本管理
- 简单可靠,有丰富的配套方案
Spring Cloud Config Client 默认客户端实现
- SpringBoot 项目不需要改动任何代码,加入一个启动配置文件指明使用 ConfigServer 上哪个配置文件即可
简单使用示例
新建一个 git 仓库,添加一个配置文件。例如想要一个 billing的服务,性质是开发,运行环境是测试环境。
那么就新建一个 testing 的分支,然后提交一个 billing-dev.properties 的文件
devMode = true spring.application.name = billing spring.jdbc.host = localhost spring.jdbc.port = 3306 spring.jdbc.user = root spring.jdbc.password = 123qwe loging.file = demo
ConfigServer.java
@SpringBootApplication @EnableConfigServer public class ConfigServer { public static void main(String[] args) { SpringApplication.run(ConfigServer.class, args); } }
application.yml
server: port: 8888 spring: cloud: config: server: git: uri:https://git.coding.net/tiangao/demo-config-server.git clone-on-start: true
上面就是配置的git仓库的地址
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>spring-cloud-demo</artifactId> <groupId>xyz.stg.cloud</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>config-server</artifactId> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> </parent> <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-config-server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> <version>1.2.1.RELEASE</version> </dependency> </dependencies> </project>
好了,配置中心已经可以启动了,配最简单的可以用浏览器来访问。

现在各个SpringCloud的项目配置接入配置中心
在resource下的bootstrap.properties配置文件中,配置中心的相关配置如下,注意不是在application.yml中配置
bootstrap.yml文件优先级比application.yml高,bootstrap.yml文件中存储的是不经常改变的配置信息
application.yml中配置的是经常改变的信息,上面spring config的配置文件必须是base-dev.yml或者base-dev.txt这种形式
在master分支
上面的billing-dev.properties,这里name就配置为billing,profile就设置为dev
config server的地址是127.0.0.1:12000这个地址
当在马云上面修改了配置文件,应用要及时的快速的收集到变更,需要使用到spring bus消息总线
spring clould bus依赖mq来实现,这里在config server服务器应用中需要增加下面的配置,一个是bus的依赖,一个是mq的依赖,在配置文件中需要增加mq的配置和bus的配置
config server服务端要使用spring bus必须暴露bus-refresh这个接口
接下来我们来看 config 客户端的配置,也需要引入bus依赖,mq依赖,同时还需要引入actuator依赖
也需要引入bus的客户端,也需要引入rabait mq,这里还需要引入actyator监听器,用来监控bus-refresh这个操作
上面就配置好了,
当我们,手动修改了马云中的配置文件之后,我们收到调用config server服务器端暴露的接口,手动通过mq发生消息给客户端,客户端一直通过mq进行消息的监听,修改了
配置文件之后,需要我们收到进行刷新
上面这个接口就是手动刷新配置文件的接口
在客户端中要获得马云上面自定义的配置文件信息,需要添加@RefreshScope注解,如果不使用客户端不能收到自定义的注解,但是application.yml自带的例如ruka、spring data jpa、Hystix这些
注解如果配置文件修改了,使用了上面的bus-refresh接口手动刷新了,应用是是可以收到到,但是配置文件中自定义的注解,如果没有@RefreshScope注解,即使使用了bus-refresh接口手动刷新了,使用但是自定义的注解是收不到的这里要特别注意。
@RefreshScope 配置文件自动刷新
1.在类上加@RefreshScope注解。
2.引入配置@Value。
5除了手动调用刷新接口实时更新配置文件之外,我们也可以使用github 的钩子,当git代码变动之后会触发钩子函数,钩子自动调用刷新接口
c
posted on 2019-09-19 15:59 luzhouxiaoshuai 阅读(2242) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2017-09-19 面试找工作必看的
2017-09-19 华三招聘面试
2017-09-19 xutils工具上传日志文件--后台服务器的搭建
2017-09-19 xutils工具上传日志文件