从重复到抽象,我做了一个 Spring Boot Starter 框架 | Solo Framework 实践分享

在日常开发中,我们总会遇到一些“每个项目都要做一遍”的重复性工作:

  • 配 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.html

  • http://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 ⭐ 一下项目,支持作者继续维护!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容