筆者團隊以前后臺都是基于.Net和.NetCore, 今年轉Java了焦履,不是.Net相關技術不好劣欢,而是在中小城市相關開發(fā)人員缺乏棕诵,Java相對來說開發(fā)人員要豐富很多。
后臺有必要重新搭建一個內部的開發(fā)框架凿将,由于沒有歷史積累校套,直接使用SpringBoot作為基礎框架,在此之上再做一個封裝牧抵。
分享出來給大家參考笛匙,此框架適應于中小企業(yè)Java實現的WebAPI項目(前后端分離)。大家可以直接使用犀变,但是最好還是理解并修改成適用自己團隊的框架妹孙。
1.基本結構
image.png
如上圖,我們的框架包含很多庫获枝,其中
d1.framework.webapi
和d1.framework.cache
是所有webapi項目都必須依賴的蠢正,其它的庫是看需求選擇依賴的。下面列出所有庫的基本功能:
-
d1.framework.webapi
: 業(yè)務項目依賴的基本庫省店,包含springboot相關很多功能的封裝嚣崭,比如Application、Entity懦傍、Service雹舀、Controller等基類,還有swagger粗俱、跨域说榆,權限統(tǒng)一認證,日志相關等等寸认,后面單獨說明签财。 -
d1.framework.cache
: 緩存相關的庫,因為d1.framework.webapi
依賴這個庫偏塞,所以所有業(yè)務項目也都依賴它荠卷,一個接口外加ehcache和redis的實現,實際業(yè)務項目中選擇一種就可以烛愧。 -
d1.framework.storage
: 不是必須依賴的庫油宜,一個接口外加本地文件存儲和七牛云存儲的實現。 -
d1.framework.util
:不是必須依賴的庫怜姿,實現一系列工具類慎冤,是在業(yè)務項目開發(fā)過程中逐漸積累的一些和業(yè)務無關的靜態(tài)方法。 -
d1.framework.push
:不是必須依賴的庫沧卢,實現極光推送蚁堤,這個是我們團隊比較常用的app推送第三方庫的封裝。 -
d1.framework.sms
:不是必須依賴的庫但狭,一個接口外加二種第三方的短信封裝披诗,主要用于注冊等短信驗證撬即。 -
d1.framework.weixin
:不是必須依賴的庫,微信小程序呈队、公眾號剥槐、app等開發(fā)平臺相關封裝。 -
d1.framework.ocr
: 不是必須依賴的庫宪摧,封裝了阿里的二個圖形識別服務粒竖,也是實際業(yè)務項目用到了后封裝的。 -
d1.framework.mqttclient
:不是必須依賴的庫几于,是對mqtt協議的實現蕊苗,也是對一個開源庫的封裝。
2. 基本說明
- springboot已經非常方便了沿彭,但是還是有必要把一些重復的不變的功能封裝成框架朽砰,開發(fā)框架和開發(fā)業(yè)務應該分開。
- 框架里有一些我們團隊特有的約定喉刘,并不一定適合所有人的習慣瞧柔。
- 所有業(yè)務項目使用gradle工具構建,主要是覺得gradle比maven更簡潔饱搏。
- 框架所有項目都上傳到我們內部的Nexus
搭建的maven庫非剃,搭建的方法可以參考我以前發(fā)的貼置逻。 業(yè)務項目通過gradle來配置依賴:
repositories {
mavenCentral()
maven{ url 'http://你的nexus庫地址/repository/d1-java/'}
}
- 除
d1.framework.webapi
庫強制依賴springboot以外推沸,其它庫都沒有依賴springboot,這樣其它庫也可以很方便用于非springboot的業(yè)務項目 - 大部分庫都是先定義接口券坞,再對這個接口進行實現鬓催,通常有好幾種實現。
- 很多第三方庫已經很簡單了恨锚,但是還是有必要做一次封裝宇驾,主要還是第三方庫功能很多,但是我們通常用到的很少猴伶,而且有很多缺省用法课舍,封裝后使用更簡單,也能讓第三方庫版本變化后對現有業(yè)務項目也沒影響他挎。
- 每個庫項目都由一個springboot業(yè)務項目作為測試庫的入口以及一個庫真正實現的module筝尾,這個module修改完后build成jar包并推送到nexus服務上。
- 所有業(yè)務項目都是在IDEA下開發(fā)办桨,沒有使用Eclipse筹淫。
- 框架是在業(yè)務項目不斷的開發(fā)中逐漸積累和完善的,功能會越來越多呢撞,bug會越來越少损姜。
3. 源碼
源碼都上傳到github,下載后要跑起來還需修改:
- 搭建自己的nexus服務饰剥,或者改造業(yè)務項目生成jar包,然后使用本地依賴方式摧阅。
- 所有第三方對應的密鑰信息都已經修改成一些隨便的數字汰蓉,確保安全性,
- 源碼里除了框架庫代碼逸尖,還有一個
d1project
項目是用于使用框架的一個webapi模板項目古沥。如果新建一個業(yè)務項目可以通過拷貝這個項目作為基礎。
本文是第一部分娇跟,第二部分主要是對
d1.framework.webapi
的詳細介紹岩齿。
跳轉到第二部分