当前位置: 首页 > article >正文

Spring Boot动态配置修改全攻略

精心整理了最新的面试资料和简历模板,有需要的可以自行获取

点击前往百度网盘获取
点击前往夸克网盘获取


无需重启应用,实时更新配置的终极指南

在微服务架构中,动态配置管理是提高系统灵活性的关键技术。本文将通过4种主流方案,手把手教你实现Spring Boot应用的配置热更新。


一、动态配置的核心价值

  • 零停机更新:修复关键配置无需重启服务
  • 环境适配:不同环境自动切换参数
  • 快速响应:实时调整限流阈值/功能开关
  • 降级容错:紧急情况动态降级服务能力

二、四大动态配置方案详解

方案1:@RefreshScope + Actuator

适用场景:简单项目快速实现
实现步骤

  1. 添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter</artifactId>
</dependency>
  1. 配置类注解
@RefreshScope
@RestController
public class ConfigController {@Value("${dynamic.message}")private String message;
}
  1. 启用端点(application.yml)
management:endpoints:web:exposure:include: refresh
  1. 触发刷新
curl -X POST http://localhost:8080/actuator/refresh

优势:Spring Cloud原生支持
局限:需手动触发刷新


方案2:Spring Cloud Config Server

适用场景:多服务集中管理
架构流程

[Git仓库] ←→ [Config Server] ←→ [Client Applications]

配置中心搭建:

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

客户端配置:

spring:cloud:config:uri: http://config-server:8888label: master

自动刷新:结合Spring Cloud Bus + RabbitMQ实现批量更新


方案3:Apollo配置中心

适用场景:企业级复杂系统
核心特性

  • 配置修改实时推送(HTTP长轮询)
  • 版本回滚/灰度发布
  • 权限审计

整合步骤:

  1. 客户端初始化
@ApolloConfig
private Config config;public String getConfigValue() {return config.getProperty("dynamic.key", "default");
}
  1. 动态监听
@ApolloConfigChangeListener
private void onChange(ConfigChangeEvent event) {if (event.isChanged("dynamic.key")) {// 执行热更新逻辑}
}

方案4:Envoy热加载

适用场景:Kubernetes环境
实现原理:通过Sidecar代理动态注入配置

配置示例(envoy.yaml):

layered_runtime:layers:- name: dynamic_configrtds_layer:rtds_config:resource_api_version: V3api_config_source:api_type: GRPCtransport_api_version: V3grpc_services:- envoy_grpc:cluster_name: xds_cluster

三、高级技巧

1. 配置版本控制

# 查看历史版本
git log config-repo/application.yml

2. 安全加固

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/actuator/**").hasRole("ADMIN");}
}

3. 性能优化方案

  • 本地缓存:Guava Cache
  • 压缩传输:启用gzip压缩
spring:cloud:config:compression:enabled: true

四、方案选型指南

维度@RefreshScopeConfig ServerApolloEnvoy
实施复杂度★☆☆★★☆★★★★★★☆
实时性秒级分钟级毫秒级秒级
运维成本
适合规模单应用中小集群大型系统云原生

五、最佳实践建议

  1. 配置分级存储

    • 环境相关配置:使用配置中心
    • 敏感信息:Vault加密存储
    • 静态配置:保留在本地文件
  2. 变更防御策略

try {applyNewConfig();
} catch (ValidationException e) {log.error("配置校验失败,自动回滚");rollbackConfig();
}
  1. 监控告警集成
# Prometheus指标示例
config_update_total{status="success"} 142
config_update_total{status="failure"} 3

六、未来演进方向

  1. Kubernetes原生方案:ConfigMap + Reloader
  2. Serverless架构:Lambda环境变量动态注入
  3. AI驱动配置:基于流量预测自动调参

相关文章:

Spring Boot动态配置修改全攻略

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 无需重启应用&#xff0c;实时更新配置的终极指南 在微服务架构中&#xff0c;动态配置管理是提高系统灵活性的关键技术。本文将通过4种主流方案&#xff0c…...

vue3:十二、图形看板- echart图表-柱状图、饼图

一、效果 如图展示增加了饼图和柱状图,并且优化了浏览器窗口大小更改,图表随着改变 二、 饼图 1、新建组件文件 新增组件EchartsExaminePie.vue,用于存储审核饼图的图表 2、写入组件信息 (1)视图层 写入一个div,写入变量chart和图表宽高 <template><div ref…...

2025年best好用的3dsmax插件和脚本

copitor 可以从一个3dsmax场景里将物体直接复制到另一个场景中 Move to surface 这个插件可以将一些物体放到一个平面上 instancer 实体器&#xff0c;举例&#xff1a;场景中有若干独立的光源&#xff0c;不是实体对象&#xff0c;我们可以使用instancer将他变成实体。 paste …...

趣谈Ai各种模型算法及应用

机器学习与深度学习模型选型终极指南&#xff1a;告别选择困难症&#xff01; 大家好&#xff01;今天&#xff0c;我们来聊一个让很多初学者甚至有经验的开发者都头疼的问题&#xff1a;面对琳琅满目的机器学习和深度学习模型&#xff0c;到底该如何选择&#xff1f;就像走进…...

HAProxy + Keepalived + Nginx 高可用负载均衡系统

1. 项目背景 在现代Web应用中&#xff0c;高可用性和负载均衡是两个至关重要的需求。本项目旨在通过HAProxy实现流量分发&#xff0c;通过Keepalived实现高可用性&#xff0c;通过Nginx提供后端服务。该架构能够确保在单点故障的情况下&#xff0c;系统仍然能够正常运行&#…...

vue2升级vue3

vue2升级vue3 父子自定义事件插槽差异 父子自定义事件 父组件的传给子组件的自定义事件以短横形式命名&#xff0c;例如&#xff1a;my-click 子组件声明该自定义事件时为 myClick 事件可以正常触发 插槽差异 vue2&#xff1a; <el-table-column:label"$t(hcp_devrs…...

5.12 note

Leetcode 图 邻接矩阵的dfs遍历 class Solution { private: vector<vector<int>> paths; vector<int> path; void dfs(vector<vector<int>>& graph, int node) { // 到n - 1结点了保存 if (node graph.size() - 1)…...

跨时钟域(CDC,clock domain crossing)信号处理

参考视频&#xff1a; 数字IC&#xff0c;FPGA秋招【单bit信号的CDC跨时钟域处理手撕代码合集】_哔哩哔哩_bilibili 一、亚稳态 原因是&#xff1a;建立时间和保持时间没有保持住。然后在下图的红框里面&#xff0c;产生亚稳态。因为电路反馈机制&#xff0c;最后大概率会恢复…...

鸿蒙HarmonyOS list优化一: list 结合 lazyforeach用法

list列表是开发中不可获取的&#xff0c;非常常用的组件&#xff0c;使用过程中会需要不断的优化&#xff0c;接下来我会用几篇文章进行list在纯原生的纯血鸿蒙的不断优化。我想进大厂&#xff0c;希望某位大厂的看到后能给次机会。 首先了解一下lazyforeach&#xff1a; Laz…...

OBS studio 减少音频中的杂音(噪音)

1. 在混音器中关闭除 麦克风 之外的所有的音频输入设备 2.在滤镜中增加“噪声抑制”和“噪声门限”...

基于神经网络的 YOLOv8、MobileNet、HigherHRNet 姿态检测比较研究

摘要 随着人工智能技术的飞速发展&#xff0c;基于神经网络的姿态检测技术在计算机视觉领域取得了显著进展。本文旨在深入比较分析当前主流的姿态检测模型&#xff0c;即 YOLOv8、MobileNet 和 HigherHRNet&#xff0c;从模型架构、性能表现、应用场景等多维度展开研究。通过详…...

智能手表 MCU 任务调度图

智能手表 MCU 任务调度图 处理器平台&#xff1a;ARM Cortex-M33 系统架构&#xff1a;事件驱动 多任务 RTOS RTOS&#xff1a;FreeRTOS&#xff08;或同类实时内核&#xff09; 一、任务调度概览 任务名称优先级周期性功能描述App_MainTask中否主循环调度器&#xff0c;系统…...

青少年编程与数学 02-019 Rust 编程基础 03课题、变量与可变性

青少年编程与数学 02-019 Rust 编程基础 03课题、变量与可变性 一、使用多个文件&#xff08;模块&#xff09;1. 创建包结构2. 在 main.rs 中引入模块示例&#xff1a;main.rs 3. 定义模块文件示例&#xff1a;module1.rs示例&#xff1a;module2.rs 4. 定义子模块示例&#x…...

S7-1500——零基础入门2、PLC的硬件架构

PLC的硬件架构 一,西门子PLC概述二,CPU介绍三,数字量模块介绍四,模拟量模块介绍五,其他模块介绍一,西门子PLC概述 本节主要内容 西门子PLC硬件架构,主要内容包括PLC概述、组成、功能及S7-1500 demo的组成与安装演示。 介绍了PLC的定义、功能、应用场合,以及与继电器控…...

前端面试宝典---webpack面试题

webpack 的 tree shaking 的原理 Webpack 的 Tree Shaking 过程主要包含以下步骤&#xff1a; 模块依赖分析&#xff1a;Webpack 首先构建一个完整的模块依赖图&#xff0c;确定每个模块之间的依赖关系。导出值分析&#xff1a;通过分析模块之间的 import 和 export&#xff…...

【PmHub后端篇】Skywalking:性能监控与分布式追踪的利器

在微服务架构日益普及的当下&#xff0c;对系统的性能监控和分布式追踪显得尤为重要。本文将详细介绍在 PmHub 项目中&#xff0c;如何使用 Skywalking 实现对系统的性能监控和分布式追踪&#xff0c;以及在这过程中的一些关键技术点和实践经验。 1 分布式链路追踪概述 在微服…...

Grafana v12.0 引入了多项新功能和改进

Grafana v12.0 引入了多项新功能和改进&#xff0c;旨在提升可观测性、仪表板管理和用户体验。以下是主要更新内容的总结&#xff1a; &#x1f680; 主要新功能与改进 1. Git 同步仪表板&#xff08;Git Sync&#xff09; Grafana v12.0 支持将仪表板直接同步到 GitHub 仓库…...

利用“Flower”实现联邦机器学习的实战指南

一个很尴尬的现状就是我们用于训练 AI 模型的数据快要用完了。所以我们在大量的使用合成数据&#xff01; 据估计&#xff0c;目前公开可用的高质量训练标记大约有 40 万亿到 90 万亿个&#xff0c;其中流行的 FineWeb 数据集包含 15 万亿个标记&#xff0c;仅限于英语。 作为…...

MongoDB使用x.509证书认证

文章目录 自定义证书生成CA证书生成服务器之间的证书生成集群证书生成用户证书 MongoDB配置java使用x.509证书连接MongoDBMongoShell使用证书连接 8.0版本的mongodb开启复制集&#xff0c;配置证书认证 自定义证书 生成CA证书 生成ca私钥&#xff1a; openssl genrsa -out ca…...

创始人 IP 的破局之道:从技术突围到生态重构的时代启示|创客匠人评述

在 2025 年的商业版图上&#xff0c;创始人 IP 正以前所未有的深度介入产业变革。当奥雅股份联合创始人李方悦在 “中国上市公司品牌价值榜” 发布会上&#xff0c;将 IP 赋能与城市更新大模型结合时&#xff0c;当马斯克在特斯拉财报电话会议上宣称 “未来属于自动驾驶和人形机…...

Gin 框架入门

Gin 框架入门 一、响应数据 JSON 响应 在 Web 开发中&#xff0c;JSON 是一种常用的数据交换格式。Gin 提供了简便的方法来响应 JSON 数据。 package mainimport ("github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/json", func(c *…...

【RabbitMQ】应用问题、仲裁队列(Raft算法)和HAProxy负载均衡

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【中间件】企业级中间件剖析 一、幂等性保障 什么是幂等性&#xff1f; 幂等性是指对一个系统进行重复调用&#xff08;相同参数&#xff09;&#xff0c;无论同一操作执行多少次&#xff0c;这些请求…...

软件设计师-错题笔记-系统开发与运行

1. 解析&#xff1a; A&#xff1a;模块是结构图的基本成分之一&#xff0c;用矩形表示 B&#xff1a;调用表示模块之间的调用关系&#xff0c;通过箭头等符号在结构图中体现 C&#xff1a;数据用于表示模块之间的传递的信息&#xff0c;在结构图中会涉及数据的流向等表示 …...

硬件设备基础

一、ARM9 内核中有多少个通用寄存器&#xff1f;其中 sp、lr、pc、cpsr、spsr 的作用是什么&#xff1f; 在 ARM9 内核中&#xff0c;寄存器组织包含 37 个 通用寄存器&#xff0c;其中&#xff0c;有 13 个通用目的寄存器&#xff08;R0 - R12&#xff09;。 S3C2440 是 ARM 架…...

[编程基础] PHP · 学习手册

&#x1f525; 《PHP 工程师修炼之路&#xff1a;从零构建系统化知识体系》 &#x1f525; &#x1f6e0;️ 专栏简介&#xff1a; 这是一个以工业级开发标准打造的 PHP 全栈技术专栏&#xff0c;涵盖语法精粹、异步编程、Zend引擎原理、框架源码、高并发架构等全维度知识体系…...

C#简易Modbus从站仿真器

C#使用NModbus库&#xff0c;编写从站仿真器&#xff0c;支持Modbus TCP访问&#xff0c;支持多个从站地址和动态启用/停用从站&#xff08;模拟离线&#xff09;&#xff0c;支持数据变化&#xff0c;可以很方便实现&#xff0c;最终效果如图所示。 项目采用.net framework 4.…...

Error parsing column 10 (YingShou=-99.5 - Double) dapper sqlite

在使用sqlite 调取 dapper的时候出现这个问题提示&#xff1a; 原因是 在 sqlite表中设定的字段类型是 decimel而在C#的字段属性也是decimel&#xff0c;结果解析F负数 小数的时候出现这个错误提示&#xff1a; 解决办法&#xff1a;使用默认的sqlite的字段类型来填入 REAL描述…...

Spring AI系列——使用大模型对文本进行内容总结归纳分析

一、技术原理与架构设计 1. 技术原理 本项目基于 Spring AI Alibaba 框架&#xff0c;结合 DashScope 大模型服务 实现文本内容的自动摘要和结构化输出。核心原理如下&#xff1a; 文档解析&#xff1a; 使用 TikaDocumentReader 解析上传的文件&#xff08;如 PDF、Word 等&…...

【深度学习】目标检测算法大全

目录 一、R-CNN 1、R-CNN概述 2、R-CNN 模型总体流程 3、核心模块详解 &#xff08;1&#xff09;候选框生成&#xff08;Selective Search&#xff09; &#xff08;2&#xff09;深度特征提取与微调 2.1 特征提取 2.2 网络微调&#xff08;Fine-tuning&#xff09; …...

5.1.1 WPF中Command使用介绍

WPF 的命令系统是一种强大的输入处理机制,它比传统的事件处理更加灵活和可重用,特别适合 MVVM (Model, View, ViewModel)模式开发。 一、命令系统核心概念 1.命令系统基本元素: 命令(Command): 即ICommand类,使用最多的是RoutedCommand,也可以自己继承ICommand使用自定…...