SpringBoot2常用模塊整合的整理,值得收藏,附github項目地址
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。
毫無疑問,是編寫後台服務的最流行的Java框架了,基於默認配置的可以讓你編寫後台服務變得異常簡單,以下我整理了項目中的常見模塊的整合整理,希望對你有幫助;
SpringBoot常用模塊整合
介面認證資料庫操作:MyBatis+代碼自動生成代碼自動生成使用步驟Dubbo微服務整合API文檔Swagger整合數據返回支持JSON和XML後台表單欄位檢驗概述分庫分表技術Redis整合:對象緩存/發布訂閱使用`Redis`的`發布訂閱`模式對象緩存使用介面安全鑒權參數鑒權驗簽舉例日誌中心整合匯流排整合(待補充)
介面認證
Restful API的認證一般通過利用用戶名和密碼,換取token獲得,這個token一般有時效,建議24小時,如果你的API介面需要認證才能使用,按以下步驟:
與的映射關係一般被保存在緩存中,可以是,或本地緩存都可以,以下以Guava Cache為例:
(可選)引入 guava 依賴,如果你使用其他緩存框架,請忽略
以下代碼定義一個緩存對象:
緩存讀寫:
添加一個攔截器:
在類里加入攔截器,如下:
這樣,如果訪問:http://localhost:9333/api/v2/test/hello?token=test
這個地址,必須傳入token參數,否則會返回錯誤,後台可根據參數的值獲取當前登錄用戶信息
資料庫操作:MyBatis+代碼自動生成
代碼自動生成
使用類自動生成,和,內含基本的資料庫操作,將自動生成的代碼拷貝到工程的src目錄下即可,以下是配置步驟:
使用步驟
maven配置
編寫一個類,如下:
配置,使用druid數據源
基本的資料庫操作可採用寫法,如保存或新增User:
或採用本身提供了幾十個方便的資料庫操作,如查找ID為1的User:
具體可參看官方文檔,點擊這裡
Dubbo微服務整合
如果您的項目需要調用微服務,作為服務的消費方,請按以下步驟進行:
引入maven依賴
配置dubbo信息,在文件中,加入:
開始使用
在Controller中引入Dubbo服務,如下:
API文檔Swagger整合
詳見:使用SwaggerUI生成API文檔
數據返回支持JSON和XML
作為一個開放平台,我們可能需要對響應的數據格式支持多種形式,目前主流的是JSON和XML,那麼一個介面,如何根據傳入的參數同時支持這兩種格式,以下步驟:
引入 依賴
編寫一個自定義的,如下:
註:SpringBoot2以後,是過期的,應該使用
這樣,當我們訪問:
http://localhost:9333/api/v2/test/hello?format=xml
時返回的是XML格式,否則默認是json格式,即如果要返回XML格式,在Restful API的介面後面加入參數
後台表單欄位檢驗
概述
前台的參數信息提交到後台,後台可能需要檢驗某些參數的合法性,這時候我們可以使用,按如下步驟:
引入maven
對請求參數校驗
介面引入註解,如:
合法請求:
http://localhost:9333/api/v2/reg?username=test&nick=ss&age=23&password=2323324234
非法請求:
密碼不通過:http://localhost:9333/api/v2/reg?username=test&nick=ss&age=23&password=232
輸出:
分庫分表技術
詳見《分庫分表技術》
Redis整合:對象緩存/發布訂閱
Redis使用場景:
:後台服務可將消息實時推送給頻道上,或其他服務訂閱來自的頻道消息,將數據實時推送給端,或後台服務本身接收來自的頻道消息;
:可用於將後台的任意對象緩存起來,根據定義的緩存策略;
以下介紹兩者的使用步驟
共有步驟
依賴引入
類定義
定義配置文件,如下:
以上我們配置好了,然後就可以在項目中使用了
使用`Redis`的`發布訂閱`模式
可以新建一個的類,編寫發布和訂閱方法,如下:
在中只需要 RedisService即可調用發布訂閱方法
對象緩存使用
需要對對象進行緩存,只需要使用註解即可,如下:
介面安全鑒權
參數鑒權
自行設置一套app申請後台,讓用戶申請appid和app-seckey;
對調用介面的參數列表按
對K升序排列,得到有序參數列表;
將應用密匙以app_key為鍵名,組成URL鍵值對拼接得到字元串S(key1=value1&key2=value2&…&app_key=密匙)
對字元串S做MD5運算,得到MD5全轉為大寫,得到介面請求籤名sign;
簽名有效期為5分鐘,參數值為Null不參與簽名,V必須使用URL編碼(https://tools.ietf.org/html/rfc1738)
驗簽舉例
參數名 參數值
app_id 8
time_stamp 1532504664
nonce_str xxx
sign值:
註:介面鑒權應用在針對安全性高標準的介面,如涉及交易,下訂單等操作,應用在開放平台的高安全性的介面中
日誌中心整合
主要思路是自定義,然後將日誌通過發往日誌中心,詳見《基於Netty的日誌採集中心設計與實現》
TAG:Sumslack團隊 |