Spring Boot搭建基本web業務框架

功能模塊:

  • RestController模塊
  • 加載自定義bean
  • 自定義JSON序列化反序化列
  • 統一異常處理
  • 攔截器+自定義注解(實現權限校驗等)
  • 返回結果統一封裝
  • 上下文傳遞(ThreadLocal實現)

項目初始化:

 從 http://start.spring.io 網站上面選擇創建自己的項目腳手架。
dependencies中添加web的依賴,generate project 下載項目。  
添加自定義的bean
    有些業務場景下面我們需要自己定義的bean或者第三方的bean交給spring ioc容器去管理

實現代碼如下:


image.png
自定義JSON序列化反序化列
Spring內部采用Jackson實現對象的序列化和反序列化。
這里只要自己在容器初始化的時候,將自己的ObjectMapper的對象實例加載到容器中,
spring就會優先使用用戶添加的對象。
這里也是體現約定大于配置的思想。

實現代碼如下:


image.png
統一異常處理
業務系統中,在寫代碼的時候捕捉了一個異常,需要將錯誤信息封裝給調用方。
由于異常或者錯誤的方式類型是有限的,但是隨著業務的擴大,拋出異常和發生錯誤的地方確會變得越來越來多。
有了統一的異常處理方式,這樣就可以在業務代碼里面大膽放心的拋出異常。

實現代碼如下:


image.png
攔截器+自定義注解(實現權限校驗等)
業務框架中攔截器必不可少,但是spring提供的根據資源地址的攔截方式,將攔截的行為和代碼分開了。
如果是能通過注解的方式進行攔截,進而處理相應的邏輯。
這樣在寫業務代碼的時候就可以指定攔截邏輯,而不用在去做spring的配置。

實現代碼如下:


image.png
返回結果統一封裝
在請求應答的業務中,我們通常回合調用方約定一種固定的應答模式經典案例就是{code,msg,result}這種方式。
但是在我們書寫具體業務的時候,其實這種對象的封裝和業務并沒有關聯。
比如我這個方法是查詢用戶信息的,那我的返回值就是返回用戶對象,所以固定的應答結構應該交給框架來做。   

實現代碼如下:


image.png
上下文傳遞(ThreadLocal實現)
在一個有用戶登錄的系統中,特別是http協議中,我們經常和調用方約定將某些標識類的信息通過http的header信息傳達給服務端。
而在spring幫我封裝好的controller里面我們又不方便去獲取請求頭中的信息。
所以這里實現一個簡單的上下文信息傳遞。

實現代碼如下:


image.png

image.png

image.png
demo項目地址:https://github.com/LKDTeam/spring-boot-demo
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,925評論 6 342
  • 有默認參數的函數 一般情況下,在函數調用時形參從實參那里取得值,因此實參的個數與形參相同。有時候多次調用同一函數時...
    成江閱讀 616評論 0 0
  • 2010的excel,套用表格樣式后不能合并單元格,選中其中需要合并的兩個單元格——樣式——轉換為區域即可。
    M萍M閱讀 10,762評論 0 1
  • 小巷秋深日暮, 葉落風吹緩。 照壁依稀水盼。 一霎那, 流光轉。 可惜孤城花季短。 才簪蝶, 幾蕭路滿。 偶得丹青...
    寺咀山主人閱讀 224評論 0 5