AgileBoot - 基于SpringBoot + Vue3的前后端快速開發腳手架

AgileBoot倉庫后端地址:https://github.com/valarchie/AgileBoot-Back-End
技術棧:Springboot / Spring Security / MyBatis Plus JPA 無XML/ Druid / Redis / Hutool / JWT
前端地址:https://github.com/valarchie/AgileBoot-Front-End
技術棧:Vue3 + ElementUI plus + Vite
由來AgileBoot這個項目的建立是因為閑暇時間想自己搗鼓一點小東西,于是當時網上找了很多快速開發腳手架 。比如Ruoyi/Jeecg-boot/ElAdmin/renren等框架 。
芋道也弄了一個Ruoyi-Pro的項目,但是功能一大堆 , 太重了,可能質量得不到保證 。
最后選擇了Ruoyi框架作為自己開發一些小東西的腳手架 。首先首先,非常感謝Ruoyi作者整理出這個項目 。
但是當我把Ruoyi項目翻了一遍之后 。發現項目的代碼水平和質量都.....   emm...   有點不像一個專業后端人員開發出來的項目 。
存在一些缺陷:

  • 命名比較亂七八糟(很多很糟糕的命名,包括機翻英語亂用)
  • 項目分包以及模塊比較亂
  • 比較原始的Controller > Service > DAO的開發模式 。過于面向過程 。
  • 一大堆自己造的輪子,并且沒有UT覆蓋 。
  • 大量邏輯嵌套在if else塊當中
  • 值的前后不統一,比如有的地方1代表是,有的地方1代表否
  • 很多很奇怪的代碼寫法(比如return result > 0 ? true:false..    一言難?。?/li>
于是乎我基于Ruoyi項目,整個進行了重構 。
重構內容設計:
  1. 將MyBatis遷移到Mybatis Plus(遷移工作非常耗時間)+ JPA的形式進行數據增刪改 + 無XML
  2. 遷移FastJson到Jackson(FastJson的坑就不多說了)
  3. 對數據庫的表進行重新優化設計
  4. 去除所謂的低代碼生成.....(這種級別的代碼生成其實意義不大 , 真正拿這個腳手架來開發的話 , 也用不上)
  5. 各個層的日志進行切面打印
  6. 前后端密碼加密傳輸
  7. 設計多級緩存體系 Map -> Guava > Redis. 不同場景使用不同級別的緩存 。Redis緩存內嵌入本地緩存 。
  8. 合理的分包: common(公共包) / infrastructure(基礎框架設施) / domain(業務邏輯) / orm(數據層) / admin(管理后臺) / api (外部API)
  9. Ruoyi的角色是多職位多角色的設計,但是作為小型快速開發腳手架 , 沒必要這樣設計,我改成單職位單角色 。
  10. 統一注解攔截數據權限
規范:
  1. 切分不同環境的啟動文件
  2. 統一設計異常類
  3. 統一設計錯誤碼并集中管理
  4. 統一系統內的變量并集中管理
  5. 統一返回模型
  6. 引入Google代碼格式化模板(Ruoyi的代碼格式很另類....)
  7. 后端代碼的命名基本都整改OK
  8. 前端代碼的命名也非?;靵y,進行了整改
整改:
  1. 引入hutool包以及guava包去掉大量自己造的輪子(大量工作.....)
  2. 引入lombok去除大量getter setter代碼
  3. 調整日志級別
  4. 字典類型數據完全用Enum進行代替
  5. 移除SQL注入的Filter,因為遷移到Mybatis Plus就不會有這個注入的問題
  6. XSS直接通過JSON攔截過濾 。
  7. 替換掉很多Deprecated的類以及配置
優化:
  1. 優化異步服務
  2. 優化Excel相關類的設計,采用hutool包成熟的輪子
  3. 權限判斷使用緩存
  4. IP地址查詢引入離線包
  5. 引入多級緩存體系
還有很多整改的點一時想不起來了,很多細枝末節的改動 , 整改整個項目花了很多時間 ?;旧险麄€項目都重構了一遍 。
項目的愿景想致力于打造一個真正能用在生產的小型開發腳手架 , 可用于外包或者公司內部的小項目 。Ruoyi感覺有點像玩具項目 。但是也很多人直接拿去用 。
但是用著應該不是那么省心 。
本項目的主要目標是
  1. 安全性
  2. 代碼規范性
  3. 更面向對象(偽DDD)
  4. 小而美的理念(不會加一大堆功能...) 如果有非常常用的功能的話,可以討論加上
  5. 真正的生產型項目
項目操作手冊前提:安裝好 MySQL / Redis / npm后端項目:
  • git clone https://github.com/valarchie/AgileBoot-Back-End
  • IDEA引入項目
  • 更改數據庫賬號

  • AgileBoot - 基于SpringBoot + Vue3的前后端快速開發腳手架

    文章插圖
  • 更改Redis賬號

  • AgileBoot - 基于SpringBoot + Vue3的前后端快速開發腳手架

    文章插圖
  • 更改IDEA啟動配置

  • AgileBoot - 基于SpringBoot + Vue3的前后端快速開發腳手架

    文章插圖
  • IDEA -> Run 即可
前端項目: