一直想搭建一款自己的脚手架项目,蹭这次离职,终于干起来了!!!

背景

虽然市面上有很多优秀的脚手架工程,比如jeesite,ruoyi这种,但总不是我理想中的样子,这些脚手架很优秀,但总给我一种感觉,那就是大杂烩一样,什么功能都往上面堆(个人见解,不喜勿喷!),所以经常会遇到一个问题,我要做的东西,不需要这个功能,移除吧,好像没必要,也担心出错,不移除吧,系统很臃肿,因此选择它们往往有以下痛点!

  • ​​功能冗余性​​:预设功能模块(如RBAC权限模型)可能与业务场景不匹配,强制引入导致系统臃肿。
  • ​​数据模型僵化​​:固化用户表结构难以适应多态业务实体(如校园系统的教师/学生、物业系统的租户/管理员),违反​​数据库设计的高内聚低耦合原则​​。
  • ​​定制成本高​​:移除非必要功能需深度改造底层代码,存在系统稳定性风险。

基于此,需构建一款​​轻量化、可插拔的基础脚手架​​,聚焦通用能力抽象而非功能堆砌,实现业务模块的快速定制化集成。

设计目标与核心理念

​​2.1 核心目标​​

  • ​​基础能力标准化​​:提供​​认证鉴权​​、​​用户管理​​等高频通用模块,确保开箱即用。
  • ​​业务模型无侵入​​:剥离数据模型与业务逻辑的强耦合,支持自定义实体扩展。
  • ​​架构轻量化​​:通过​​模块化设计​​与​​条件装配机制​​,避免非必要功能加载。

​​2.2 设计原则​​

  • ​​单一职责原则(SRP)​​:每个模块仅解决特定问题(如认证模块独立于权限模型)。
  • ​​开闭原则(OCP)​​:通过接口抽象(如UserService)支持业务实体扩展,避免修改核心代码。
  • ​​依赖倒置原则(DIP)​​:高层模块(如登录服务)不依赖底层数据模型,通过抽象接口解耦。

背景

基于以上的想法,进行了一个初步的方案设计,系统框架如下:

项目结构图

项目开发思路

基于上面的框架设计,我们在脚手架工程我们抽离出公共业务模块,如评论模块,支付模块,用户行为模块,缓存模块等等,当我们要开发一个项目的时候,我们只需要在我们的服务引入相关的功能模块就可以了,比如:

  • 我们需要网站对外服务,也就是一个PC网站,那我们只需要引入PC网站模块,就可以得到一个公共的网站功能,然后开发我们具体的页面内容就实现了网站的开发!
  • 我要开发一个博客项目,可能需要评论功能,我只需要引入PC网站模块+评论模块,然后在相关页面引入评论模块提供的组件,那我们就完成了博客网站+评论功能的开发;
  • 我们需要支付功能,只需要引入支付模块,然后再按支付模块的协议写好我们本项目的回调业务处理逻辑,就完成了支付服务的对接等等;
  • 我们服务想要支持集群部署,引入缓存服务,自动基于redis实现session共享,满足负载均衡请求。
  • 其他服务........