Unic 取名来自 universal config,本意是想做一个万能的配置系统
解放工作中的众多后台配置需求,解放生产力
奈何作者实力有限,还有很多地方需要改进,如有更好建议,欢迎和作者交流
作者邮箱: miluoshaoyu@163.com
项目地址:https://gitee.com/swicky/unic
本项目是基于 Base-Admin (gitee地址:https://gitee.com/huanzi-qch/base-admin)
新增一些功能做的一套通用后台配置,在支持Base-Admin的原有功能基础上,具体新增了以下功能:
1.自定义配置
2.配置菜单/页面自动生成,授权
3.配置领域划分
4.配置版本支持
5.远程服务使用配置 支持Spring Autowire注解
6.远程服务使用配置支持实时更新
7.远程服务使用配置支持本地文件缓存 以实现配置服务宕机也可以使用的高可用性
作者在公司里做需求的时候,会碰到很多后台配置的开发需求,如活动配置等等,这些开发需求虽然简单,但是非常耗时,又复杂麻烦,
需要建表,开发增删改查代码,协调前端资源等等,每次的配置需求都比较类似,觉得是可以集成一下做成一个比较通用的项目,
在网上搜索一番,发现没有比较好的项目可以直接拿来使用,于是参考了一些开源框架(如 Apollo )的实现方式之后,开发这一套 Unic项目.
项目的亮点是每次有新增的配置需求,开发可以直接在页面配置响应的配置结构,生成一个配置页面,授权给用户使用,用户配置好数据之后,开发只需要在另一个项目里引用jar包,
便可以很方便的获取配置数据,为了更方便的支持数据的使用,本项目还将配置类注入到Spring容器中,支持 Spring 注解注入的方式进行使用
另外项目汲取了 Apollo 配置的优点,支持配置的实时更新和本地文件缓存,项目不用重编译,不用重启也能有效的快速的获取配置数据.
在本地down下项目之后,创建数据库,执行DDL和DML,配置文件中配置数据库连接,然后启动就可以了~数据库SQL脚本在这里:
sql文件
1.创建配置:
(1)新建配置
创建一个配置实例,使用 sa 用户(用户名(sa)密码(123456)写死在登录页面,上线记得删除)登录之后,点击[通用配置管理]->[配置管理]进入配置页面
点击[添加配置]打开弹窗页面,输入配置名称和配置code,注意配置code
是全局唯一的.
(2) 配置列表页面菜单功能说明
先看看配置页面长什么样:
配置页面
1)领域配置: 领域的概念就是隔离的概念,比如说开发环境和生产环境是一种领域隔离, A服务和 B服务也是一种隔离,
简单的来说就是,在不同的场景/环境等情况下,可以使用不同的配置.
2)预览配置页: 对编辑后的配置进行配置页的预览,让你知道你生成的配置页大概长什么样子
3)编辑: 编辑配置的数据结构
4)生成菜单:当你确认好你的配置的数据结构时,便可以生成一个菜单,用来展示你的配置页
5)菜单授权:新生成的菜单只对你自己生效,如果要将菜单权限授权给其他人,可以使用菜单授权功能._
(3)领域配置
就是很简单的配置领域的新增/启用/禁用/删除功能
(4)编辑
编辑页详细
说明
编辑里分三块:
第一块是配置基本信息,包含配置名称和配置Code, 配置名称是可以修改的,配置Code一旦生成后,不支持修改,而且配置Code要确保全局唯一.
第二块是树状结构,用来编辑配置的数据结构,目前仅支持字符串,日期,复杂对象和数组四种类型,后续会添加其他数据类型,如图片上传等.
第三块是编辑单个配置项的配置方式表单,其中包含配置项名称,配置项 code,配置项类型,输入类型和数据来源配置等,
当输入类型为单选/复选/下拉框时,支持定制数据的来源,目前仅支持固定枚举值,格式如下: 存储值:展示值,存储值:展示值,存储值:展示值
数据源配置
(5) 配置预览
配置页预览
说明:
当配置项是一个数组或者对象时,会有折叠按钮, 单选框/下拉框展示的值就是在配置时,输入的枚举值
(6) 生成菜单
将做好的配置生成一个配置菜单,菜单初始化时,只有编辑这个配置的用户可以看到,如果需要给运营或者产品使用,则需要使用授权功能.
(7) 新增配置
生成菜单后,需要重新刷新一下页面才能看到菜单,菜单位于[运营配置管理]下面,点击展开就可以看到以 [配置名称(配置code)]命名的菜单,
点击即可进入到配置页面,配置页可以选择配置领域,首次进入默认为第一个领域,如页面没有一个绿色小按钮,说明没有配置领域,需要回到之前的通用配置页新建领域
当选择好领域之后,便可以点击[新增配置]来添加一个配置了.
当前页面配置的数据都属于该领域,每次保存配置时,都会自动启用本次编辑的配置,每个版本的配置不可修改,修改便会生成新的版本,启用的版本不可删除,要删除某个版本,
需要先启用其他版本的配置
当发现新建的配置有误时,可以启动上一个版本的配置来保证业务系统的安全.
给运营或者产品使用的配置页
2.配置的使用:
配置的使用非常简单:
1.首先在需要使用配置的项目里 引用unic-client jar包,(这里我没有将 jar 包上传到任何仓库,请使用的同学自行打 jar 包到自己的私人仓库.)
在启动类添加注解@EnableUnic 开启配置
2.在你的项目的配置文件添加如下配置:
unic.config.servers=127.0.0.1:80,127.0.0.1:80 #后台配置ip 和 port,集群部署的时候,多台机器以逗号隔开
unic.config.domain=dev #默认领域值
3.在任意地方新建配置类(当然这个配置类必须能被启动类扫描到),其字段属性和刚刚后台编辑的配置的数据结构一一对应(这里我后续会在页面上增加生成代码功能),
然后在配置类上面添加注解@UnicConfig
注解有三个属性 value configCode 和 domain
你可以使用configCode 或者 value 来对应配置的配置code(这也是为什么要求配置 code 是全局唯一的)
如果不填写code,将使用类名进行匹配
domain可填可不填,当填写的时候,使用该领域值进行匹配,当不填写的时候,使用配置文件中的默认领域值进行匹配
测试效果:
代码:
启动类
配置类
测试类
接下里就是测试:
新增一个配置
配置内容如下:
所依赖 jar 包的项目会打印日志:
2021-08-02 17:06:08.260 INFO 6896 --- [ Thread-44] c.sy.unic.core.UnicRemoteConfigService : configCode[Test_Config] had changed its values,new version is[1],show new values :{"sc":{"weight":"123","height":"180"},"sex":"1","name":"Swicky","age":"14"}
说明本次配置立即生效了
使用 postman 来试试是否真的生效:
postman 演示
再次修改配置看看效果:
修改配置
同样的,项目里也打印了日志:
2021-08-02 17:13:49.327 INFO 6896 --- [ Thread-44] c.sy.unic.core.UnicRemoteConfigService : configCode[Test_Config] had changed its values,new version is[2],show new values :{"sc":{"weight":"123","height":"180"},"sex":"1","name":"Swicky22","age":"100"}
postman 演示:
postman演示
好了,本项目大概就是如此,如果大家有任何问题,请提issue或者邮箱联系我,我会及时回复的.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型