BLOG – 個人博文系統開發總結 一:概覽

NO IMAGE

BLOG 是學習 JavaWeb 開發4個月以來的總結實踐專案,使用了SSM(Spring、SpringMVC、MyBatis)框架,MVC 三層結構,Shiro 身份,許可權管理,Lucene 全文檢索引擎工具的個人博文系統。

GitHub地址:DuanJiaNing/BlogSystem

1. 開發環境

IDE:IntelliJ IDEA 2017.3 x64、Postman、navicat、Google Chrome
jdk版本:jdk1.8.0_45
MySQL版本:5.7.16-log
伺服器:apache-tomcat-8.5.24

2. 專案結構

參考博文:手把手教你整合最優雅SSM框架:SpringMVC Spring MyBatis

專案結構


程式碼包結構


專案使用 SSM 框架,spring 的配置檔案、mybatis 的對映檔案、國際化資源、資料庫檔案以及專案的配置檔案放置於 resources 目錄中。

程式碼放置於 java 目錄中,包分層包含 JavaWeb 專案基礎包:entity、dao、dto、service、web,此外還有 util 工具包,列舉類包,異常類包、shiro 的 realm所在包,manager(類似於util包,但承當了比util更具針對性,與web.api耦合更緊密的一些功能)包。

2.1 service

業務層(service)根據用例參與者來進行劃分,分為 audience(讀者)、blogger(博主)、通用的 common 以及他們的實現(impl)。

2.2 web

web 層分為 api 和 blog 兩層,api 層主要為 url 介面,每一個 url 請求都返回 json 資料,用於前端 javaScript 訪問,不涉及頁面跳轉控制。blog 對應一個具體的網站應用,即BLOGBLOG使用了 api 包中提供的介面,同時依賴於其他的包。

2.3 dao

dao 層定義了 MyBatis 的資料庫操控介面,在 resources/mapper 目錄中存放了其對應的對映檔案。

2.4 exception

exception 包中定義了所有的專案異常(錯誤資訊),這些錯誤都是 RuntimeException,一些檢查異常,如IOException也被轉化為執行時異常,這樣做使這些異常在繁雜的方法呼叫棧中可以不被吞噬,能夠以簡潔的方式拋到最上層,即 web 包中的類,由控制層(web層)決定如何處理這些異常,如對於 web.api 中丟擲的錯誤資訊,將會以 json 的方式將錯誤資訊對應的程式碼以及錯誤的描述資訊返回給API使用者。
參考了聚合API的設計。

3. 開發流程

專案開發流程參考javaee專案開發流程,開發過程將一些過程省略(畢竟這是一個人的專案)。

將專案的開發分為兩大部分:後端API介面開發和網站開發。

3.1 後端 API 介面開發(web.api)

API開發的最終程式碼入口為 com.duan.blogos.web.api 包中的類,每一個類對應於一類資料的操控,不涉及頁面跳轉控制。api 的呼叫通過 url 的方式,url 的設計遵循 RESTful 風格。
參照:RESTful API 設計指南

這部分的開發佔據了大量時間,在最終編寫 api 包中類的程式碼前需完成資料庫表的設計,dao、entity、service 以及其他輔助類的編寫以及測試,後續的網站開發也依賴於其中一部分類。

例如:com.duan.blogos.web.api.BloggerLinkController#add 方法
其對應的url:/blogger/{bloggerId}/link,bloggerId指博主id
請求方式:POST
返回資料型別:JSON
請求引數:iconIdtitleurlbewrite
程式碼為:

對於 api 包中的每一個介面方法都有對應的文件說明。包含詳盡的呼叫說明、返回引數說明以及錯誤程式碼說明。

詳盡API文件見 BlogSystem-wiki

1.2 網站開發 (web.blog)

網頁開發的最終程式碼放置於 com.duan.blogos.web.blog 包中,這些類(或類中的方法)直接與前端頁面對應,相互依賴,控制跳轉和資料傳遞。

網站截圖

3. 用例圖

3.1 讀者用例

3.2 博主用例


—END—