在日常开发中,我们总会遇到一些“每个项目都要做一遍”的重复性工作:
配 Swagger、Knife4j,手动处理兼容问题;
写统一响应结构,封装
Result<T>;参数校验逻辑 scattered everywhere(特别是分组校验、集合校验、枚举校验);
异常处理、错误码、国际化,总感觉每个项目写法都不一样……
于是我决定不再忍了,花时间抽象出一套“开箱即用、标准化、非侵入”的 Spring Boot Starter 框架:
它的名字叫 Solo Framework
GitHub 地址 👉 https://github.com/2500639734/solo-framework
💡 为什么做这个框架?
市面上有很多脚手架或低代码平台,但是:
要么太重、侵入性强,需要你改造项目结构;
要么功能过多,像 CRM 而不是 SDK;
要么只是把代码模板抽出来,并不是真正“组件化”地解决问题。
我希望:
✅ 开发者可以继续使用自己的项目结构
✅ 只需引入依赖 + 配置,就能获得统一的开发体验
✅ 可以灵活定制,而不是被框架绑死
于是,我决定动手做一个完全非侵入、模块化的 Spring Boot 开发框架。
🧱 框架结构设计
整个框架模块非常清晰:
| 模块 | 说明 |
|---|---|
starter-core |
上下文、异常、响应封装 |
starter-web |
Swagger、参数校验增强、国际化 |
starter-mts |
MyBatis Plus 自动配置 |
starter-rocketmq |
事务消息封装(规划中) |
starter-redis |
缓存、分布式锁支持(规划中) |
🚀 核心功能一览
1️⃣ 统一响应结构
默认就返回:
{
"code": 0,
"message": "请求成功",
"data": {...},
"traceId": "xxx",
"timestamp": 1726757122136
}
不需要你写 ResponseEntity,只管返回对象。
2️⃣ 全局异常处理
自动捕获所有异常(包括
@Validated参数校验失败)自动映射为
ApiResponse自定义业务异常只需实现
IErrorCode接口并抛出:
throw new IErrorException(MyErrorCode.USER_NOT_FOUND);
3️⃣ 参数校验增强
✅ 分组校验(内置
CreateGroup/UpdateGroup接口)✅ 集合参数校验(
ValidationList<T>)✅ 枚举类型校验(自定义注解
@EnumPattern)
4️⃣ 国际化支持
内置中文和英文资源
错误码与提示信息分离
支持
/set-locale接口动态切换语言
5️⃣ JSON序列化标准化(FastJson2)
默认日期格式:
yyyy-MM-dd HH:mm:ss忽略 null 字段
支持全局 YAML 配置 / Java 配置类定制
6️⃣ 接口文档(Swagger + Knife4j)
默认集成,访问地址:
http://localhost:8080/swagger-ui/index.htmlhttp://localhost:8080/doc.html
⚙️ 快速接入
1️⃣ 在业务项目中引入:
<dependency>
<groupId>com.solo.framework</groupId>
<artifactId>solo-framework-starter-web</artifactId>
<version>1.0.0</version>
</dependency>
2️⃣ application.yml 中配置数据库信息(如使用 MyBatis Plus)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo
username: root
password: root
3️⃣ 启动项目,访问 Swagger 文档,开始写业务代码!
🌍 项目地址 & 说明文档
🧭 GitHub 地址:
👉 https://github.com/2500639734/solo-framework
📚 说明文档:README 已附带模块说明 + 示例代码 + 快速接入指南。
🧡 如果这篇文章对你有帮助:
点赞 👍 一下,分享给同样苦恼的同事;
评论 📝 一下,说说你做过哪些封装;
Star ⭐ 一下项目,支持作者继续维护!