3 Star 8 Fork 1

Swicky / unic

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MulanPSL-2.0

简介:

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或者邮箱联系我,我会及时回复的.

木兰宽松许可证, 第2版 木兰宽松许可证, 第2版 2020年1月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: 0. 定义 “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体”是指提交贡献的机构及其“关联实体”。 “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 条款结束 如何将木兰宽松许可证,第2版,应用到您的软件 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License,Version 2 Mulan Permissive Software License,Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details.

简介

Unic 是一款支持任意配置形式的在线万能配置系统,基于 Base-Admin 后台配置,支持远程实时更新,本地文件缓存,配置支持SpringBean 注入的后台配置系统 展开 收起
JavaScript 等 4 种语言
MulanPSL-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/swicky/unic.git
git@gitee.com:swicky/unic.git
swicky
unic
unic
master

搜索帮助