背景
虽然市面上有很多优秀的脚手架工程,比如jeesite,ruoyi这种,但总不是我理想中的样子,这些脚手架很优秀,但总给我一种感觉,那就是大杂烩一样,什么功能都往上面堆(个人见解,不喜勿喷!),所以经常会遇到一个问题,我要做的东西,不需要这个功能,移除吧,好像没必要,也担心出错,不移除吧,系统很臃肿,因此选择它们往往有以下痛点!
- 功能冗余性:预设功能模块(如RBAC权限模型)可能与业务场景不匹配,强制引入导致系统臃肿。
- 数据模型僵化:固化用户表结构难以适应多态业务实体(如校园系统的教师/学生、物业系统的租户/管理员),违反数据库设计的高内聚低耦合原则。
- 定制成本高:移除非必要功能需深度改造底层代码,存在系统稳定性风险。
基于此,需构建一款轻量化、可插拔的基础脚手架,聚焦通用能力抽象而非功能堆砌,实现业务模块的快速定制化集成。
设计目标与核心理念
2.1 核心目标
- 基础能力标准化:提供认证鉴权、用户管理等高频通用模块,确保开箱即用。
- 业务模型无侵入:剥离数据模型与业务逻辑的强耦合,支持自定义实体扩展。
- 架构轻量化:通过模块化设计与条件装配机制,避免非必要功能加载。
2.2 设计原则
- 单一职责原则(SRP):每个模块仅解决特定问题(如认证模块独立于权限模型)。
- 开闭原则(OCP):通过接口抽象(如UserService)支持业务实体扩展,避免修改核心代码。
- 依赖倒置原则(DIP):高层模块(如登录服务)不依赖底层数据模型,通过抽象接口解耦。
背景
基于以上的想法,进行了一个初步的方案设计,系统框架如下:
项目结构图
项目开发思路
基于上面的框架设计,我们在脚手架工程我们抽离出公共业务模块,如评论模块,支付模块,用户行为模块,缓存模块等等,当我们要开发一个项目的时候,我们只需要在我们的服务引入相关的功能模块就可以了,比如:
- 我们需要网站对外服务,也就是一个PC网站,那我们只需要引入PC网站模块,就可以得到一个公共的网站功能,然后开发我们具体的页面内容就实现了网站的开发!
- 我要开发一个博客项目,可能需要评论功能,我只需要引入PC网站模块+评论模块,然后在相关页面引入评论模块提供的组件,那我们就完成了博客网站+评论功能的开发;
- 我们需要支付功能,只需要引入支付模块,然后再按支付模块的协议写好我们本项目的回调业务处理逻辑,就完成了支付服务的对接等等;
- 我们服务想要支持集群部署,引入缓存服务,自动基于redis实现session共享,满足负载均衡请求。
- 其他服务........