AgileBoot
倉庫
后端地址:https://github.com/valarchie/AgileBoot-Back-End
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比廣漢網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式廣漢網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋廣漢地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
技術(shù)棧:Springboot / Spring Security / MyBatis Plus JPA 無XML/ Druid / Redis / Hutool / JWT
前端地址:https://github.com/valarchie/AgileBoot-Front-End
技術(shù)棧:Vue3 + ElementUI plus + Vite
為了方便有的小伙伴訪問。已遷移到gitee.
https://gitee.com/valarchie/AgileBoot-Back-End
https://gitee.com/valarchie/AgileBoot-Front-End
由來
AgileBoot這個項目的建立是因為閑暇時間想自己搗鼓一點小東西,于是當時網(wǎng)上找了很多快速開發(fā)腳手架。比如Ruoyi/Jeecg-boot/ElAdmin/renren等框架。
芋道也弄了一個Ruoyi-Pro的項目,但是功能一大堆,太重了,可能質(zhì)量得不到保證。
最后選擇了Ruoyi框架作為自己開發(fā)一些小東西的腳手架。首先首先,非常感謝Ruoyi作者整理出這個項目。
但是當我把Ruoyi項目翻了一遍之后。發(fā)現(xiàn)項目的代碼水平和質(zhì)量都..... emm... 有點不像一個專業(yè)后端人員開發(fā)出來的項目。
存在一些缺陷:
- 命名比較亂七八糟(很多很糟糕的命名,包括機翻英語亂用)
- 項目分包以及模塊比較亂
- 比較原始的Controller > Service > DAO的開發(fā)模式。過于面向過程。
- 一大堆自己造的輪子,并且沒有UT覆蓋。
- 大量邏輯嵌套在if else塊當中
- 值的前后不統(tǒng)一,比如有的地方1代表是,有的地方1代表否
- 很多很奇怪的代碼寫法(比如return result > 0 ? true:false.. 一言難盡)
于是乎我基于Ruoyi項目,整個進行了重構(gòu)。
重構(gòu)內(nèi)容
設計:
- 將MyBatis遷移到Mybatis Plus(遷移工作非常耗時間)+ JPA的形式進行數(shù)據(jù)增刪改 + 無XML
- 遷移FastJson到Jackson(FastJson的坑就不多說了)
- 對數(shù)據(jù)庫的表進行重新優(yōu)化設計
- 去除所謂的低代碼生成.....(這種級別的代碼生成其實意義不大,真正拿這個腳手架來開發(fā)的話,也用不上)
- 各個層的日志進行切面打印
- 前后端密碼加密傳輸
- 設計多級緩存體系 Map -> Guava > Redis. 不同場景使用不同級別的緩存。Redis緩存內(nèi)嵌入本地緩存。
- 合理的分包: common(公共包) / infrastructure(基礎框架設施) / domain(業(yè)務邏輯) / orm(數(shù)據(jù)層) / admin(管理后臺) / api (外部API)
- Ruoyi的角色是多職位多角色的設計,但是作為小型快速開發(fā)腳手架,沒必要這樣設計,我改成單職位單角色。
- 統(tǒng)一注解攔截數(shù)據(jù)權(quán)限
規(guī)范:
- 切分不同環(huán)境的啟動文件
- 統(tǒng)一設計異常類
- 統(tǒng)一設計錯誤碼并集中管理
- 統(tǒng)一系統(tǒng)內(nèi)的變量并集中管理
- 統(tǒng)一返回模型
- 引入Google代碼格式化模板(Ruoyi的代碼格式很另類....)
- 后端代碼的命名基本都整改OK
- 前端代碼的命名也非?;靵y,進行了整改
整改:
- 引入hutool包以及guava包去掉大量自己造的輪子(大量工作.....)
- 引入lombok去除大量getter setter代碼
- 調(diào)整日志級別
- 字典類型數(shù)據(jù)完全用Enum進行代替
- 移除SQL注入的Filter,因為遷移到Mybatis Plus就不會有這個注入的問題
- XSS直接通過JSON攔截過濾。
- 替換掉很多Deprecated的類以及配置
優(yōu)化:
- 優(yōu)化異步服務
- 優(yōu)化Excel相關(guān)類的設計,采用hutool包成熟的輪子
- 權(quán)限判斷使用緩存
- IP地址查詢引入離線包
- 引入多級緩存體系
還有很多整改的點一時想不起來了,很多細枝末節(jié)的改動,整改整個項目花了很多時間?;旧险麄€項目都重構(gòu)了一遍。
項目的愿景
想致力于打造一個真正能用在生產(chǎn)的小型開發(fā)腳手架,可用于外包或者公司內(nèi)部的小項目。Ruoyi感覺有點像玩具項目。但是也很多人直接拿去用。
但是用著應該不是那么省心。
本項目的主要目標是
- 安全性
- 代碼規(guī)范性
- 更面向?qū)ο螅▊蜠DD)
- 小而美的理念(不會加一大堆功能...) 如果有非常常用的功能的話,可以討論加上
- 真正的生產(chǎn)型項目
項目操作手冊
前提:安裝好 MySQL / Redis / npm
詳細啟動教程:https://www.cnblogs.com/valarchie/p/.html
后端項目:
- git clone https://github.com/valarchie/AgileBoot-Back-End
- IDEA引入項目
- 更改數(shù)據(jù)庫賬號
- 更改Redis賬號
- 更改IDEA啟動配置
- IDEA -> Run 即可
前端項目:
- git clone https://github.com/valarchie/AgileBoot-Front-End
- Vscode引入項目
- npm install
- npm run dev
訪問localhost即可
最后
本人水平一般能力有限。有錯誤或者代碼規(guī)范或者設計上的問題,懇請大家指出。歡迎大家提Issue, 提PR. 每周都會更新。
PS:前端方面是小白,有大佬來一起優(yōu)化嗎~ 嘿嘿
交流群:
本文標題:AgileBoot
網(wǎng)址分享:
http://weahome.cn/article/dscgeei.html