Kernel、Plugin、Starter 职责
Forge Admin 采用三级模块化设计,每层有明确的职责边界。
三层职责
| 层级 | 说明 | 举例 |
|---|---|---|
| Kernel(核心) | 框架基础设施,统一依赖管理(BOM) | forge-dependencies、forge-starter-core |
| Starter(启动器) | 技术能力封装,提供横向技术支撑 | 认证、缓存、ORM、加密、日志 |
| Plugin(插件) | 业务功能模块,可插拔的业务实现 | 系统管理、代码生成、流程、AI |
设计原则
- Starter 是技术能力:认证、缓存、ORM、加密、分布式锁等。解决"怎么做"的问题。
- Plugin 是业务功能:用户管理、代码生成、流程审批、消息推送等。解决"做什么"的问题。
- Plugin 依赖 Starter:Plugin 可以调用任何 Starter 提供的能力,但 Starter 不依赖 Plugin。
- Kernel 管理全局:统一依赖版本、核心工具类、全局异常处理。
模块完整树
forge-framework/
├── forge-dependencies/ # 【BOM】统一依赖版本管理
│
├── forge-starter-parent/ # 【技术启动器】横向能力
│ ├── forge-starter-core/ # 核心工具类、异常、统一响应
│ ├── forge-starter-web/ # Web 层(Undertow + 全局异常)
│ ├── forge-starter-auth/ # 认证授权(Sa-Token)
│ ├── forge-starter-orm/ # ORM(MyBatis-Plus + 动态数据源)
│ ├── forge-starter-cache/ # 缓存(Redis + Redisson)
│ ├── forge-starter-tenant/ # 多租户隔离
│ ├── forge-starter-datascope/ # 数据权限
│ ├── forge-starter-crypto/ # API 加解密
│ ├── forge-starter-excel/ # Excel 导入导出
│ ├── forge-starter-file/ # 文件存储
│ ├── forge-starter-log/ # 操作日志
│ ├── forge-starter-idempotent/ # 幂等控制
│ ├── forge-starter-id/ # 分布式 ID
│ ├── forge-starter-config/ # 动态配置
│ ├── forge-starter-trans/ # 分布式事务
│ ├── forge-starter-social/ # 社交登录
│ └── forge-sartter-websocket/ # WebSocket
│
└── forge-plugin-parent/ # 【业务插件】纵向能力
├── forge-plugin-system/ # 系统管理(用户/角色/菜单/部门)
├── forge-plugin-generator/ # 代码生成器
├── forge-plugin-job/ # 定时任务
├── forge-plugin-message/ # 消息中心
├── forge-plugin-flow/ # 流程引擎
└── forge-plugin-ai/ # AI 能力如何选择
| 你想做的事 | 应该放在 |
|---|---|
| 封装一个新的技术能力(如新缓存方案) | 新建 Starter |
| 实现一个新的业务功能(如发票管理) | 新建 Plugin |
| 修改用户管理的业务逻辑 | 修改 Plugin-system |
| 修改 ORM 层的拦截器逻辑 | 修改 Starter-orm |
| 新增全局工具类 | 修改 Starter-core |
依赖关系
Plugin → Starter → Core
↓
Kernel (Dependencies BOM)- Plugin 可以依赖 Starter
- Starter 之间可以互相依赖
- Plugin 之间不应有强依赖
- 所有模块版本统一由
forge-dependenciesBOM 管理
