1. 程式人生 > >快速搭建中小型系統SpringBoot腳手架

快速搭建中小型系統SpringBoot腳手架

asset系統是基於springBoot開發的一套簡單腳手架系統,主要用於快速搭建企業中小型系統,由於企業中小型系統所採用的技術框架大體相同,為了避免每次重新搭建和配置的繁瑣及各種相容問題,以及為了一個有一個屬於自己程式碼風格的系統(這應該是每一個程式設計師的理想吧),asset就這麼誕生了。

主要功能:

本系統定位是一個腳手架,也即是說只搭建系統的骨架,沒有具體的業務功能,很多開源系統都是整套系統,相當於一個完整的專案, 這樣的弊端很明顯,因為不同的業務場景所需要的具體業務不同,所以我們只能學習和參考,膜拜,但不能拿來即用, 隨著技術的迭代,優勝劣汰,目前,雖然專案各有不同,但各種專案技術框架的選型和配置都差不多, 所以我更喜歡偏向於搭建一個可以基於任何系統拿來即用的腳手架,因為我覺得有了骨架,具體的血肉因當根據不同的業務場景進行填充, 我相信一個好的腳手架,一定可以大大減少我們苦逼開發人員在搭建配置框架那些繁瑣的工作量, 在基於一套配置完善的且風格統一的編碼風格下,便得以可以將更多的時間與精力分配到具體的業務功能程式碼上,輕輕鬆鬆,安安靜靜的碼程式碼。

技術框架

  • 核心框架:SpringBoot2.0
  • 安全框架:Apache Shiro 1.3.2
  • 快取框架:Redis 3.2
  • 持久層框架:MyBatis 3 mybatisplus 2.1.4
  • 資料庫連線池:Alibaba Druid 1.0.2
  • 日誌管理:SLF4J 1.7、logback
  • 前端框架:layui
  • 後臺模板:layuicms 2.0。
  • 介面文件:swagger2.0
  • 其它外掛:lombok

統一編碼規範:

網頁功能主要是create、read、update、delete。但是實現方式、網址設計可能不一樣。 目前主流提倡RESTful面向資源地設計API,當然為了更好地體現語義化(易於理解)、統一規範(同樣為了易於接受和理解)、以及表現資源的層級關係、資源與資源之間的關係等等,那麼URI的設計應該就要有所講究了。

URL命名定義規範:

  URL請求採用小寫字母,數字,部分特殊符號(非製表符)組成。  
  URL請求中不採用大小寫混合的駝峰命名方式,儘量採用全小寫單詞,如果需要連線多個單詞,則採用連線符“_”連線單詞

URL分級

  第一級Pattern為模組,比如組織管理/orgz, 網格化:/grid
  第二級Pattern為資源分類或者功能請求,優先採用資源分類

CRUD請求定義規範(RESTful):

  1. GET-獲取資源 讀取 (read,使用 GET )
  2. POST-建立資源-不具有冪等性 新增 (create,使用 POST )
  3. PUT-更新 (update,使用 PUT ) 建立(更新)資源-具有冪等性
  4. DELETE-刪除資源 刪除 (destroy,使用 DELETE)

冪等性:每次HTTP請求相同的引數,相同的URL,產生的結果是相同的

統一返回狀態碼規範:

  200 OK - [GET]:伺服器成功返回使用者請求的資料,該操作是冪等的(Idempotent)。
  201 CREATED - [POST/PUT/PATCH]:使用者新建或修改資料成功。
  202 Accepted - [*]:表示一個請求已經進入後臺排隊(非同步任務)
  400 INVALID REQUEST - [POST/PUT/PATCH]:使用者發出的請求有錯誤,伺服器沒有進行新建或修改資料的操作,該操作是冪等的。
  401 Unauthorized - [*]:表示使用者沒有許可權(令牌、使用者名稱、密碼錯誤)。
  403 Forbidden - [*] 表示使用者得到授權(與401錯誤相對),但是訪問是被禁止的。
  404 NOT FOUND - [*]:使用者發出的請求針對的是不存在的記錄,伺服器沒有進行操作,該操作是冪等的。
  406 Not Acceptable - [GET]:使用者請求的格式不可得(比如使用者請求JSON格式,但是隻有XML格式)。
  410 Gone -[GET]:使用者請求的資源被永久刪除,且不會再得到的。
  422 Unprocesable entity - [POST/PUT/PATCH] 當建立一個物件時,發生一個驗證錯誤。
  500 INTERNAL SERVER ERROR - [*]:伺服器發生錯誤,使用者將無法判斷髮出的請求是否成功。
Dao 介面命名規範 Service 介面命名規範
insert… Gryffindor
batchInsert… add…
selectXXXByXXX findXXXByXXX
selectOne findOne
count… count…
selectXXXList findXXXList
updateXXXByXXX modifyXXXByXXX
deleteXXXByXXX removexxxByXXX