基于SpringBoot的WebAPI開發(fā)框架(一)

筆者團隊以前后臺都是基于.Net和.NetCore, 今年轉Java了焦履,不是.Net相關技術不好劣欢,而是在中小城市相關開發(fā)人員缺乏棕诵,Java相對來說開發(fā)人員要豐富很多。
后臺有必要重新搭建一個內部的開發(fā)框架凿将,由于沒有歷史積累校套,直接使用SpringBoot作為基礎框架,在此之上再做一個封裝牧抵。
分享出來給大家參考笛匙,此框架適應于中小企業(yè)Java實現的WebAPI項目(前后端分離)。大家可以直接使用犀变,但是最好還是理解并修改成適用自己團隊的框架妹孙。

1.基本結構

image.png

如上圖,我們的框架包含很多庫获枝,其中d1.framework.webapid1.framework.cache是所有webapi項目都必須依賴的蠢正,其它的庫是看需求選擇依賴的。下面列出所有庫的基本功能:

  1. d1.framework.webapi: 業(yè)務項目依賴的基本庫省店,包含springboot相關很多功能的封裝嚣崭,比如Application、Entity懦傍、Service雹舀、Controller等基類,還有swagger粗俱、跨域说榆,權限統(tǒng)一認證,日志相關等等寸认,后面單獨說明签财。
  2. d1.framework.cache: 緩存相關的庫,因為d1.framework.webapi依賴這個庫偏塞,所以所有業(yè)務項目也都依賴它荠卷,一個接口外加ehcache和redis的實現,實際業(yè)務項目中選擇一種就可以烛愧。
  3. d1.framework.storage: 不是必須依賴的庫油宜,一個接口外加本地文件存儲和七牛云存儲的實現。
  4. d1.framework.util:不是必須依賴的庫怜姿,實現一系列工具類慎冤,是在業(yè)務項目開發(fā)過程中逐漸積累的一些和業(yè)務無關的靜態(tài)方法。
  5. d1.framework.push:不是必須依賴的庫沧卢,實現極光推送蚁堤,這個是我們團隊比較常用的app推送第三方庫的封裝。
  6. d1.framework.sms:不是必須依賴的庫但狭,一個接口外加二種第三方的短信封裝披诗,主要用于注冊等短信驗證撬即。
  7. d1.framework.weixin:不是必須依賴的庫,微信小程序呈队、公眾號剥槐、app等開發(fā)平臺相關封裝。
  8. d1.framework.ocr: 不是必須依賴的庫宪摧,封裝了阿里的二個圖形識別服務粒竖,也是實際業(yè)務項目用到了后封裝的。
  9. d1.framework.mqttclient:不是必須依賴的庫几于,是對mqtt協議的實現蕊苗,也是對一個開源庫的封裝。

2. 基本說明

  1. springboot已經非常方便了沿彭,但是還是有必要把一些重復的不變的功能封裝成框架朽砰,開發(fā)框架和開發(fā)業(yè)務應該分開。
  2. 框架里有一些我們團隊特有的約定喉刘,并不一定適合所有人的習慣瞧柔。
  3. 所有業(yè)務項目使用gradle工具構建,主要是覺得gradle比maven更簡潔饱搏。
  4. 框架所有項目都上傳到我們內部的Nexus
    搭建的maven庫非剃,搭建的方法可以參考我以前發(fā)的置逻。 業(yè)務項目通過gradle來配置依賴:
repositories {
    mavenCentral()
    maven{ url 'http://你的nexus庫地址/repository/d1-java/'}
}
  1. d1.framework.webapi庫強制依賴springboot以外推沸,其它庫都沒有依賴springboot,這樣其它庫也可以很方便用于非springboot的業(yè)務項目
  2. 大部分庫都是先定義接口券坞,再對這個接口進行實現鬓催,通常有好幾種實現。
  3. 很多第三方庫已經很簡單了恨锚,但是還是有必要做一次封裝宇驾,主要還是第三方庫功能很多,但是我們通常用到的很少猴伶,而且有很多缺省用法课舍,封裝后使用更簡單,也能讓第三方庫版本變化后對現有業(yè)務項目也沒影響他挎。
  4. 每個庫項目都由一個springboot業(yè)務項目作為測試庫的入口以及一個庫真正實現的module筝尾,這個module修改完后build成jar包并推送到nexus服務上。
  5. 所有業(yè)務項目都是在IDEA下開發(fā)办桨,沒有使用Eclipse筹淫。
  6. 框架是在業(yè)務項目不斷的開發(fā)中逐漸積累和完善的,功能會越來越多呢撞,bug會越來越少损姜。

3. 源碼

源碼都上傳到github,下載后要跑起來還需修改:

  1. 搭建自己的nexus服務饰剥,或者改造業(yè)務項目生成jar包,然后使用本地依賴方式摧阅。
  2. 所有第三方對應的密鑰信息都已經修改成一些隨便的數字汰蓉,確保安全性,
  3. 源碼里除了框架庫代碼逸尖,還有一個d1project項目是用于使用框架的一個webapi模板項目古沥。如果新建一個業(yè)務項目可以通過拷貝這個項目作為基礎。

本文是第一部分娇跟,第二部分主要是對d1.framework.webapi的詳細介紹岩齿。

跳轉到第二部分

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市苞俘,隨后出現的幾起案子盹沈,更是在濱河造成了極大的恐慌,老刑警劉巖吃谣,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乞封,死亡現場離奇詭異,居然都是意外死亡岗憋,警方通過查閱死者的電腦和手機肃晚,發(fā)現死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仔戈,“玉大人关串,你說我怎么就攤上這事〖嗯牵” “怎么了晋修?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長凰盔。 經常有香客問我墓卦,道長,這世上最難降的妖魔是什么户敬? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任落剪,我火速辦了婚禮,結果婚禮上尿庐,老公的妹妹穿的比我還像新娘忠怖。我一直安慰自己,他們只是感情好屁倔,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布脑又。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪问麸。 梳的紋絲不亂的頭發(fā)上往衷,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音严卖,去河邊找鬼席舍。 笑死,一個胖子當著我的面吹牛哮笆,可吹牛的內容都是我干的来颤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼稠肘,長吁一口氣:“原來是場噩夢啊……” “哼福铅!你這毒婦竟也來了?” 一聲冷哼從身側響起项阴,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤滑黔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后环揽,有當地人在樹林里發(fā)現了一具尸體略荡,經...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年歉胶,在試婚紗的時候發(fā)現自己被綠了汛兜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡通今,死狀恐怖粥谬,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情衡创,我是刑警寧澤帝嗡,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布晶通,位于F島的核電站璃氢,受9級特大地震影響,放射性物質發(fā)生泄漏狮辽。R本人自食惡果不足惜一也,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喉脖。 院中可真熱鬧椰苟,春花似錦、人聲如沸树叽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至洁仗,卻和暖如春层皱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赠潦。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工叫胖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人她奥。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓瓮增,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哩俭。 傳聞我的和親對象是個殘疾皇子绷跑,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354