前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UCode CMS组件式脚手架开发实践

UCode CMS组件式脚手架开发实践

原创
作者头像
赛先生和泰先生
修改2022-03-28 19:19:07
3510
修改2022-03-28 19:19:07
举报
文章被收录于专栏:Java知识图谱

一、序言

UCode Cms是面向企业级应用软件开发的脚手架。希望构造一个合起来是一个系统,拆分出来是独立的组件,供其它项目复用。

本项目与其它项目的显著区别是拒绝摊大饼式功能集成,核心追求是代码和功能复用。

当前版本
代码语言:html
复制
<version>1.5.2.1</version>

二、项目基本情况

(一)项目特点
1、源码开源

源码开源并且使用MIT开源许可协议,个人或者企业用户免费放心使用,项目源码地址:

代码语言:shell
复制
git clone https://gitee.com/decsa/ucode-cms-vue.git
2、快速上手

新建空项目,引入相关依赖,初始化数据库,启动项目,一个项目脚手架便搭建完成,更加便捷的操作是克隆demo项目,修改数据库连接并启动项目。

代码语言:html
复制
<!--ucode-cms核心依赖-->
<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-spring-boot-starter</artifactId>
    <version>1.5.2.1</version>
</dependency>
(二)项目的内在逻辑

市面上各种管理系统做的非常好,作者无意重复造轮子,简要本项目的初衷。

大部分管理系统属于大杂烩性质的,说的难听点是堆砌功能,其实很多时候仅仅是想用其做个项目初始环境脚手架而已,并不想用过多的功能,齐全的功能此时却是累赘。

第一个特点:积木式结构。积木式结构允许使用者在核心依赖的基础上自由选择功能模块,体现的思想是功能复用,减少无意义的功能开发。

第二个特点:暴露配置。隐藏源码,暴露配置意味着使用者既能通过配置文件修改系统行为,又能较少的与不相干源码打交道。

第三个特点:标准化代码。鼓励使用者按照项目的框架提炼公共代码,按照类似插件性质予以封装,为本项目添砖加瓦。

1、标准化

标准化是UCodeCms项目的核心内涵,即将通用性的功能浓缩成不可修改的互相独立的Maven依赖,用户使用时可按需配置

2、高内聚低耦合

广泛使用高内聚低耦合设计原则,将用户很少修改的源码进行封装,同时对外提供可供修改配置的开关,降低使用成本。

3、积木式项目结构

核心依赖仅需要引入ucode-cms-spring-boot-starter便可初始化项目,starter内置其余核心依赖。

三、项目细节

(一)项目结构

UCode Cms源码项目结构如下

代码语言:text
复制
├── cms-ui                              // 系统UI部分源码
├── sql                                 // 系统数据库SQL脚本
├── ucode-cms-admin                     // 测试demo项目(非必选)
├── ucode-cms-code                      // 代码生成器源码
├── ucode-cms-code-spring-boot-starter  // 代码生成器starter
├── ucode-cms-common                    // 通用代码部分(核心依赖、可跨项目使用)
├── ucode-cms-excel                     // Excel处理模块源码
├── ucode-cms-framework                 // 核心依赖
├── ucode-cms-job                       // 任务调度源码
├── ucode-cms-monitor                   // 系统监控源码
├── ucode-cms-spring-boot-starter       // 核心starter
├── ucode-cms-system                    // 系统部分源码
└── ucode-cms-ui                        // 系统UI部分依赖
(二)项目依赖

UCode Cms使用的是热门主流框架依赖。

依赖

版本

JDK

1.8

Spring Framework

5

Spring Boot

2.6.3

Mybatis Plus

3.5.0

hutool

5.7.19

Guava

31.0.1-jre

四、对外复用依赖

本系统基于Spring生态,除了满足自身需求外,还能够以Maven依赖的方式对外提供功能和代码的复用。

1、公共代码

公共代码依赖广泛应用于本项目中,同时也能以工具类的方式对外提供服务。

代码语言:html
复制
<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-common</artifactId>
    <version>1.5.2.1</version>
</dependency>
2、代码生成器

作者很懒,对于重复性代码连复制粘贴的欲望也没有,于是跨项目版的代码生成器应运而生。支持单表代码生成、多表连接代码生成。

代码语言:html
复制
<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-code-spring-boot-starter</artifactId>
    <version>1.5.2.1</version>
</dependency>
3、分布式BitMap

支持编码和注解两种方式实现分布式BitMap

代码语言:html
复制
<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-bitmap</artifactId>
    <version>1.5.2.1</version>
</dependency>
4、分布式限流

使用注解,基于IP或者用户的方式对接口限流,支持分布式系统。

代码语言:html
复制
<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-limiter</artifactId>
    <version>1.5.2.1</version>
</dependency>
5、防重复提交

对于一些增加数据的场合,由于非幂等性的原因,网络不稳定容易产生脏数据,这时可使用防重复提交功能。

代码语言:html
复制
<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-repeat</artifactId>
    <version>1.5.2.1</version>
</dependency>
6、分布式日志收集

基于Redis pub/sub订阅特性实现的日志收集,用消息队列的方式收集日志,然后从另外系统消费日志(数据落库)。实现了跨系统日志收集复用。

代码语言:html
复制
<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-log</artifactId>
    <version>1.5.2.1</version>
</dependency>
7、统计API接口响应时间

基于AOP的方式封装统计API接口响应时间,按需引入。

代码语言:html
复制
<dependency>
    <groupId>xin.altitude.cms</groupId>
    <artifactId>ucode-cms-take-time</artifactId>
    <version>1.5.2.1</version>
</dependency>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、序言
    • 当前版本
    • 二、项目基本情况
      • (一)项目特点
        • 1、源码开源
        • 2、快速上手
      • (二)项目的内在逻辑
        • 1、标准化
        • 2、高内聚低耦合
        • 3、积木式项目结构
    • 三、项目细节
      • (一)项目结构
        • (二)项目依赖
          • 1、公共代码
          • 2、代码生成器
          • 3、分布式BitMap
          • 4、分布式限流
          • 5、防重复提交
          • 6、分布式日志收集
          • 7、统计API接口响应时间
      • 四、对外复用依赖
      相关产品与服务
      消息队列 CMQ
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档