從重復(fù)到抽象,我做了一個 Spring Boot Starter 框架 | Solo Framework 實踐分享

在日常開發(fā)中,我們總會遇到一些“每個項目都要做一遍”的重復(fù)性工作:

  • 配 Swagger、Knife4j,手動處理兼容問題;

  • 寫統(tǒng)一響應(yīng)結(jié)構(gòu),封裝 Result<T>

  • 參數(shù)校驗邏輯 scattered everywhere(特別是分組校驗、集合校驗、枚舉校驗);

  • 異常處理、錯誤碼、國際化,總感覺每個項目寫法都不一樣……

于是我決定不再忍了,花時間抽象出一套“開箱即用、標(biāo)準(zhǔn)化、非侵入”的 Spring Boot Starter 框架:

它的名字叫 Solo Framework
GitHub 地址 ?? https://github.com/2500639734/solo-framework


?? 為什么做這個框架?

市面上有很多腳手架或低代碼平臺,但是:

  • 要么太重、侵入性強,需要你改造項目結(jié)構(gòu);

  • 要么功能過多,像 CRM 而不是 SDK;

  • 要么只是把代碼模板抽出來,并不是真正“組件化”地解決問題。

我希望:

? 開發(fā)者可以繼續(xù)使用自己的項目結(jié)構(gòu)
? 只需引入依賴 + 配置,就能獲得統(tǒng)一的開發(fā)體驗
? 可以靈活定制,而不是被框架綁死

于是,我決定動手做一個完全非侵入、模塊化的 Spring Boot 開發(fā)框架。


?? 框架結(jié)構(gòu)設(shè)計

整個框架模塊非常清晰:

模塊 說明
starter-core 上下文、異常、響應(yīng)封裝
starter-web Swagger、參數(shù)校驗增強、國際化
starter-mts MyBatis Plus 自動配置
starter-rocketmq 事務(wù)消息封裝(規(guī)劃中)
starter-redis 緩存、分布式鎖支持(規(guī)劃中)

?? 核心功能一覽

1?? 統(tǒng)一響應(yīng)結(jié)構(gòu)

默認就返回:

{
  "code": 0,
  "message": "請求成功",
  "data": {...},
  "traceId": "xxx",
  "timestamp": 1726757122136
}

不需要你寫 ResponseEntity,只管返回對象。

2?? 全局異常處理

  • 自動捕獲所有異常(包括 @Validated 參數(shù)校驗失敗)

  • 自動映射為 ApiResponse

  • 自定義業(yè)務(wù)異常只需實現(xiàn) IErrorCode 接口并拋出:

throw  new  IErrorException(MyErrorCode.USER_NOT_FOUND);

3?? 參數(shù)校驗增強

  • ? 分組校驗(內(nèi)置 CreateGroup / UpdateGroup 接口)

  • ? 集合參數(shù)校驗(ValidationList<T>

  • ? 枚舉類型校驗(自定義注解 @EnumPattern

4?? 國際化支持

  • 內(nèi)置中文和英文資源

  • 錯誤碼與提示信息分離

  • 支持 /set-locale 接口動態(tài)切換語言

5?? JSON序列化標(biāo)準(zhǔn)化(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?? 在業(yè)務(wù)項目中引入:

<dependency> 
     <groupId>com.solo.framework</groupId>
     <artifactId>solo-framework-starter-web</artifactId>
     <version>1.0.0</version>
</dependency>

2?? application.yml 中配置數(shù)據(jù)庫信息(如使用 MyBatis Plus)

spring:  
  datasource:  
    driver-class-name: com.mysql.cj.jdbc.Driver
    url:  jdbc:mysql://localhost:3306/demo  
    username:  root  
    password:  root

3?? 啟動項目,訪問 Swagger 文檔,開始寫業(yè)務(wù)代碼!

?? 項目地址 & 說明文檔

?? GitHub 地址:
?? https://github.com/2500639734/solo-framework

?? 說明文檔:README 已附帶模塊說明 + 示例代碼 + 快速接入指南。

?? 如果這篇文章對你有幫助:

  • 點贊 ?? 一下,分享給同樣苦惱的同事;

  • 評論 ?? 一下,說說你做過哪些封裝;

  • Star ? 一下項目,支持作者繼續(xù)維護!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容