Spring Cloud 如何动态刷新 Git 仓库配置?

简介: 有时候在配置中心有些参数是需要修改的,这时候如何不重启而达到实时生效的效果呢?

本文基于以下讲解:

  • Spring Cloud Greenwich.SR3
  • Spring Boot 2.1.7.RELEASE
  • 基于 Git 的配置中心仓库

添加 actuator 依赖

在引用配置中心的项目中添加以下 actuator 依赖:

<dependencies>
    ...
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency> 
  ...
</dependencies>

spring-boot-starter-actuator:这个模块的 /actuator/refresh (POST请求)端点可以刷新配置,更多的使用参考 Spring Boot 系列文章。


暴露 refresh 端点

actuator 默认是不暴露 refresh 端点的,需要我们主动暴露,在引用配置中心的项目中添加以下配置:

management:
  endpoints:
    web:
      exposure:
        include: refresh,info,health

添加刷新范围

引用了配置中心的项目,在需要刷新的 Bean 上添加 @RefreshScope 注解。

示例1:

@RefreshScope
@RestController
public class TestController {
  @Value("${username}")
  private String username;
...
}
@RefreshScope
@ConfigurationProperties(prefix = "spring.mail")
public class MailProperties {
...
}

当配置更改时,标有 @RefreshScope 的 Bean 将得到特殊处理来生效配置,不然改了配置不会刷新的。@RefreshScope 的原理可以参考这篇文章:Spring Cloud @RefreshScope 原理是什么?,很详细。


手动刷新配置

修改配置后,我们可以通过 post 到 /actuator/refresh 即可手动刷新配置。


如下图所示:

image.png

如果参数有变更,刷新成功的话,会返回一个含有参数名的变更数组。

自动刷新配置

如果你使用了 Gitlab 或者 Github 仓库,可以配置 Webhooks 来做到自动更新,当参数变更时,能做到自动通知。

Gitlab配置如下图所示:

image.png

Github也差不多的,可以配置一个 URL(用于变更通知)和一个 Secret Token(用于请求验证)。


但这种方式仅限于单台,如果有多台或者多个系统,该如何通知,恐怕需要加一个公共接口来绕一圈了。


如果需要请求头认证的,可以使用这种方式:


https://user:password@ip:port/xxxx


扩展问题

如果使用配置中心项目少的情况,我们是可以通过上面的方式进行配置动态刷新,如果项目比较复杂的情况呢?


上面的方式肯定都是行不通的,Spring Cloud Bus 消息总线可以解决配置修改的真正的动态刷新,请看下回分解。关注微信公众号:Java技术栈,第一时间推送。在公众号后台回复:cloud,还能获取栈长整理的 Spring Cloud 系列教程,都是实战干货。

目录
相关文章
|
11月前
|
存储 安全 开发工具
Git安装与配置:操作步骤+Gitee绑定
本文系统介绍了Git从安装配置到远程协作的全流程,涵盖基础概念、常用命令、分支管理、冲突解决及Gitee实战操作,助你高效掌握代码版本控制与团队协作技巧。
1600 155
|
网络安全 开发工具 git
配置本地环境以管理Git多账户SSH连接的方法
通过以上步駟设置后, 您可以轻松管理多個 Git 账户并且根据不同项目需求切换 SSH 密匙进行版本控制操作。
1457 20
|
存储 Java 开发工具
【Git】零基础入门:配置与初始操作实战指南
本文聚焦 Git 的“从 0 到 1”配置与基础操作,旨在帮助 Java 开发者快速掌握环境搭建、用户配置、仓库初始化、代码提交、版本回退等核心技能。内容设计上避免涉及复杂的分支策略或高级命令,以实用为导向,适合零基础入门者系统学习,为后续参与企业级项目开发奠定版本控制基础。
|
JSON Java Nacos
SpringCloud 应用 Nacos 配置中心注解
在 Spring Cloud 应用中可以非常低成本地集成 Nacos 实现配置动态刷新,在应用程序代码中通过 Spring 官方的注解 @Value 和 @ConfigurationProperties,引用 Spring enviroment 上下文中的属性值,这种用法的最大优点是无代码层面侵入性,但也存在诸多限制,为了解决问题,提升应用接入 Nacos 配置中心的易用性,Spring Cloud Alibaba 发布一套全新的 Nacos 配置中心的注解。
2044 158
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
686 10
|
安全 Shell 开发工具
Windows下使用git配置gitee远程仓库
就在前几天因为一些原因,我的电脑重装了系统,然后再重新配置git的环境的时候就遇到了一些小问题。所以我决定自己写一篇文章,以便以后再配置git时,避免一些错误操作,而导致全网搜方法,找对的文章去找对应的解决方法。下面为了演示方便就拿gitee来演示,不拿GitHub了写文章了。
738 0
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
5223 14
|
移动开发 jenkins 持续交付
jenkins配置git
通过上述步骤,您可以在 Jenkins 中成功配置 Git,从而实现自动拉取代码并进行构建和部署。这些配置不仅提高了开发效率,还保证了代码的连续集成和交付。确保每一步配置正确,以避免在实际使用中遇到问题。
2522 1
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
1010 2
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
2245 0