Smart-Config SpringBoot动态变更配置 单机版apollo

Smart-Config(单机Apollo)

  • 智能配置:单体应用下的动态配置。
  • 主要用来解决在单体应用没有配置中心时,想要实现动态变更配置,程序自动处理配置变更,给字段赋值的痛点。可以理解为单机版的Apollo。
  • Apollo是携程开源的分布式配置中心,需要单独的部署Apllo配置中心应用,然后在业务应用中指定配置中心的地址,去获取配置中心的配置,实现自定义逻辑。
  • Smart-Config对比Applo的区别是,它是不需要单独去部署应用的,是直接内嵌在我们的业务应用中的。并且侵入性小,上手简单。

优势

  • 权限校验
    • 登录之后才能够查看,修改,发布配置
  • 动态变更配置
    • 业务程序自动获取最新配置,给对应字段赋值
  • 配置描述推断
    • 将配置文件中的注释通过推断显示在webUi中
  • WebUi修改配置
  • 支持非SpringBoot应用
  • 无缝衔接SpringBoot应用
    • 启动类添加@EnableSmartConfig注解使用SmartConfig功能
  • 支持结构化数据(json,集合,对象)
    • Spring使用@Value来支持简单类型
    • SmartConfig使用@JsonValue来支持结构化数据
  • 轻量级无冗余第三方库
  • 内嵌轻量级jetty服务器
  • WebUi支持中英文切换
  • 支持springboot多配置文件
  • 支持spring.config.location以及spring.profiles.active
  • 支持启动参数修改WebUi端口以及配置描述推断

如何使用

依赖引入
<dependency>
   <groupId>io.github.yangfeng20</groupId>
   <artifactId>smart-config-core</artifactId>
   <version>1.0.0</version>
</dependency>
配置文件添加WebUi用户名和密码
# smart配置
smart.username=admin
smart.password=admin
  1. Spring-Boot使用

    主类添加注解@EnableSmartConfig

    @EnableSmartConfig
    public class XxxApplication {
        ApplicationContext application = SpringApplication.run(XxxApplication.class, args);
    }
    

    使用@Value注解

    public class AppConfig{
    
       @Value("${configKey}")
       private String value;
       
       @JsonValue("${list:[1]}")
       private List<Integer> list;
       
       @JsonValue("${config.entity:{}}")
       private XxxEntity entity; 
    
    } 
    
  2. 非spring项目使用

    创建LocalFileConfig对象,参数分别为webUi的端口,是否推断配置描述。

    public class App{
       public static void main(String[]args){
           SmartConfig smartConfig = new LocalFileConfig(6767, true);
           List<String> list = new ArrayList<>();
           list.add("com.maple.smart.config.test");
           AbsConfigBootstrap bootstrap = new LocalConfigBootstrap(true, 6767,"classpath:application.properties", list);
           bootstrap.init();
       }
    }   
    

    静态类的静态字段使用@SmartValue注解

    public class AppConfig{
    
        @SmartValue("配置key:默认值")
        private static String config1;
    
        @SmartValue("biz.name:abc")
        private static String bizName;
    
        @JsonValue("${list:[1]}")
        private static List<Integer> list;
       
        @JsonValue("${config.entity:{}}")
        private static XxxEntity entity; 
    }
    

注意事项

  • Web-Ui默认端口:6767
  • SpringBoot应用配置类被代理后请勿直接访问属性,而是通过getter访问
  • 非Spring应用仅支持静态变量。

项目地址,记得点个star

github: https://github.com/yangfeng20/smart-config
gitee: https://gitee.com/yangfeng20/smart-config

UML类图

在这里插入图片描述

架构图地址:

https://www.processon.com/preview/6574750440125a40fd170439
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/513518.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GROBID库文献解析

1. 起因 由于某些原因需要在大量的文献中查找相关内容&#xff0c;手动实在是太慢了&#xff0c;所以选择了GROBID库进行文献批量解析 2. GROBID介绍 GROBID是一个机器学习库&#xff0c;用于将PDF等原始文档提取、解析和re-structuring为结构化的XML/TEI编码文档&#xff0…

Linux笔记之制作基于ubuntu20.4的最小OpenGL C++开发docker镜像

Linux笔记之制作基于ubuntu20.4的最小OpenGL C开发docker镜像 —— 2024-04-03 夜 code review! 文章目录 Linux笔记之制作基于ubuntu20.4的最小OpenGL C开发docker镜像1.这里把这本书的例程代码放在了Dockerfile所在的文件夹内以使镜像预装例程代码2.创建Dockerfile3.构建Do…

【Java】Thread详解

&#x1f352;前言 本文将从以下几方面来展开对Thread的介绍。 1.线程创建 2.线程中断 3.线程等待 4.线程休眠 在前面的文章中&#xff0c;已经总结了关于Thread的一些理解。 在阅读本文之前&#xff0c;最好对其有一些基础的了解。 文章链接: 【JavaSE】进程是什么&#xff1f…

【Java】线程的状态

在之前的文章中&#xff0c;已经介绍了关于线程的基础知识。 我的主页: &#x1f346;&#x1f346;&#x1f346;爱吃南瓜的北瓜 文章目录 ✍绪论&#x1f350;1.NEW&#x1f350;2.TERMINATED&#x1f350;3.RUNNABLE--------------------&#x1f350;4.WAITING&#x1f350…

基于STC12C5A60S2系列1T 8051单片机的带字库液晶显示器LCD12864数据传输并行模式显示常规字符应用

基于STC12C5A60S2系列1T 8051单片机的带字库液晶显示器LCD12864数据传输并行模式显示常规字符应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显示器LCD12864简…

MySQL版本特性和存储引擎选择

MySQL版本特性和存储引擎选择 1.说一下MySQL 5.5 5.6 5.7 8.0 各个版本的特性 MySQL 5.5 优点: 稳定性&#xff1a;5.5版本是长期支持&#xff08;LTS&#xff09;版本&#xff0c;因此它非常稳定&#xff0c;被广泛部署在生产环境中。兼容性&#xff1a;与旧版本的MySQL和…

安达发|建材行业选择APS自动排程软件要遵循哪几点?

在建材行业中&#xff0c;选择合适的APS&#xff08;高级计划排程&#xff09;自动排程软件对于提高生产效率、减少浪费、优化资源配置和提升客户满意度至关重要。以下是选择APS自动排程软件时应遵循的几个关键点&#xff1a; 1. 行业特定需求&#xff1a;不同的建材企业可能有…

百卓Smart管理平台 importexport.php SQL注入漏洞复现(CVE-2024-27718)

0x01 产品简介 百卓Smart管理平台是北京百卓网络技术有限公司(以下简称百卓网络)的一款安全网关产品,是一家致力于构建下一代安全互联网的高科技企业。 0x02 漏洞概述 百卓Smart管理平台 importexport.php 接口处存在SQL注入漏洞,攻击者除了可以利用 SQL 注入漏洞获取数据…

顶象全系列产品升级,对抗AI带来的新威胁

4月2日&#xff0c;在顶象CSDN直播间&#xff0c;最新一期“业务安全大讲堂”上&#xff0c;顶象数据科学家翼龙与资深解决方案专家鳯羽&#xff0c;围绕当前备受关注的AI威胁、人脸风险进行深入分享&#xff0c;并详细介绍针对AI威胁的最新反欺诈技术与安全产品。 AI威胁带来的…

软件设计师27--规范化理论

软件设计师27--规范化理论 考点1&#xff1a;规范化理论基本概念函数依赖规范化理论--Amstrong公理体系候选键主属性与非主属性例题&#xff1a; 考点2&#xff1a;范式判断规范化理论规范化理论 - 范式例题&#xff1a; 考点3&#xff1a;范式分解保持函数依赖分解无损分解模式…

Linux中的shell脚本之流程控制循环遍历

3 条件判断 4 流程控制语句 1&#xff09;if 语句 案例&#xff0c;用户输入用户名和密码&#xff0c;判断用户名是否是admin,密码是否是123,如果正确&#xff0c;则显示登录成功 首先我创建了shell文件&#xff0c;touch getpawer 其中getpawer 是我自己命的名 #!/bin/bas…

阿里云数据库服务器价格表查询,一键查询报价

阿里云数据库服务器价格表&#xff0c;优惠99元一年起&#xff0c;ECS云服务器2核2G、3M固定带宽、40G ESSD Entry云盘&#xff0c;优惠价格99元一年&#xff1b;阿里云数据库MySQL版2核2G基础系列经济版99元1年、2核4GB 227.99元1年&#xff0c;云数据库PostgreSQL、SQL Serve…

C语言 | Leetcode C语言题解之第5题最长回文子串

题目&#xff1a; 题解&#xff1a; char* longestPalindrome(char* s) {int lenstrlen(s),max0;int p0;for(int i0;i<len;i)//这种是判断奇数回文{int lefti-1,righti1;//left左边&#xff0c;right右边while(left>0&&right<len&&s[left]s[right]){/…

P1102 A-B 数对 (非二分,不开龙永远的痛,用map解决)

可是我真的会伤心 题目链接 思路&#xff1a;1.本来想的是暴力&#xff0c;两层循环模拟每个数。 2.后来想先把每个数字的个数求出来放在数组nums【】中&#xff0c;并把不重复的数字存到数组b&#xff0c;再两层循环b数组应该时间复杂度会好些&#xff0c;如果b数组中的两个数…

【VUE】ruoyi框架自带页面可正常缓存,新页面缓存无效

ruoyi框架自带页面可正常缓存&#xff0c;新页面缓存无效 背景&#xff1a; 用若依框架进行开发时&#xff0c;发现ruoyi自带的页面缓存正常&#xff0c;而新开发的页面即使设置了缓存&#xff0c;当重新进入页面时依旧刷新了接口。 原因&#xff1a;页面name与 getRouters …

配置启动nacos,保姆级教程

下载nacos 下载链接 https://github.com/alibaba/nacos/releases进去下拉&#xff0c;找到下载版本信息。 下载后如图所示。 配置数据库 在我们的conf文件夹中有一个nacos-mysql的数据库文件 我们需要导入数据库&#xff0c;可通过工具Navicat等进行导入。 会有一下几张表…

【基础篇】1.6 开发环境搭建

写在前面 学习STM32的开发&#xff0c;我们需要选选择合适型号&#xff0c;STM32开发板。通过前面的博客&#xff0c;我们知道它通常包含了微控制器、外设接口和必要的电路组件。 在搭建STM32开发环境时&#xff0c;开发者需要首先安装选定的IDE&#xff08;如Keil MDK&#…

Unity类银河恶魔城学习记录12-2 p124 Character Stats UI源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_Statslot.cs using System.Collections; using System.Collections.Gen…

无极低码:免费版部署操作指南

无极低码 :https://wheart.cn 无极低码:免费试用版部署过程参照: 无极低码部署版操作指南 https://wheart.cn/so/home?m=index&id=ad614930-d936-11ee-8489-525400be6368 ” 。 下载完解压成后进行部署

C语言 分支控制——条件语句

目录 选择结构 单分支选择结构&#xff08;Single Selsction&#xff09; 双分支选择结构&#xff08;Double Selection&#xff09; 多分支选择结构&#xff08;Multiple Selsction&#xff09; 条件运算符和条件表达式 复合语句&#xff08;Compound Statement&#xff…