基于SpringBoot的WebAPI开发框架(一)

笔者团队以前后台都是基于.Net和.NetCore, 今年转Java了,不是.Net相关技术不好,而是在中小城市相关开发人员缺乏,Java相对来说开发人员要丰富很多。
后台有必要重新搭建一个内部的开发框架,由于没有历史积累,直接使用SpringBoot作为基础框架,在此之上再做一个封装。
分享出来给大家参考,此框架适应于中小企业Java实现的WebAPI项目(前后端分离)。大家可以直接使用,但是最好还是理解并修改成适用自己团队的框架。

1.基本结构

image.png

如上图,我们的框架包含很多库,其中d1.framework.webapid1.framework.cache是所有webapi项目都必须依赖的,其它的库是看需求选择依赖的。下面列出所有库的基本功能:

  1. d1.framework.webapi: 业务项目依赖的基本库,包含springboot相关很多功能的封装,比如Application、Entity、Service、Controller等基类,还有swagger、跨域,权限统一认证,日志相关等等,后面单独说明。
  2. d1.framework.cache: 缓存相关的库,因为d1.framework.webapi依赖这个库,所以所有业务项目也都依赖它,一个接口外加ehcache和redis的实现,实际业务项目中选择一种就可以。
  3. d1.framework.storage: 不是必须依赖的库,一个接口外加本地文件存储和七牛云存储的实现。
  4. d1.framework.util:不是必须依赖的库,实现一系列工具类,是在业务项目开发过程中逐渐积累的一些和业务无关的静态方法。
  5. d1.framework.push:不是必须依赖的库,实现极光推送,这个是我们团队比较常用的app推送第三方库的封装。
  6. d1.framework.sms:不是必须依赖的库,一个接口外加二种第三方的短信封装,主要用于注册等短信验证。
  7. d1.framework.weixin:不是必须依赖的库,微信小程序、公众号、app等开发平台相关封装。
  8. d1.framework.ocr: 不是必须依赖的库,封装了阿里的二个图形识别服务,也是实际业务项目用到了后封装的。
  9. d1.framework.mqttclient:不是必须依赖的库,是对mqtt协议的实现,也是对一个开源库的封装。

2. 基本说明

  1. springboot已经非常方便了,但是还是有必要把一些重复的不变的功能封装成框架,开发框架和开发业务应该分开。
  2. 框架里有一些我们团队特有的约定,并不一定适合所有人的习惯。
  3. 所有业务项目使用gradle工具构建,主要是觉得gradle比maven更简洁。
  4. 框架所有项目都上传到我们内部的Nexus
    搭建的maven库,搭建的方法可以参考我以前发的。 业务项目通过gradle来配置依赖:
repositories {
    mavenCentral()
    maven{ url 'http://你的nexus库地址/repository/d1-java/'}
}
  1. d1.framework.webapi库强制依赖springboot以外,其它库都没有依赖springboot,这样其它库也可以很方便用于非springboot的业务项目
  2. 大部分库都是先定义接口,再对这个接口进行实现,通常有好几种实现。
  3. 很多第三方库已经很简单了,但是还是有必要做一次封装,主要还是第三方库功能很多,但是我们通常用到的很少,而且有很多缺省用法,封装后使用更简单,也能让第三方库版本变化后对现有业务项目也没影响。
  4. 每个库项目都由一个springboot业务项目作为测试库的入口以及一个库真正实现的module,这个module修改完后build成jar包并推送到nexus服务上。
  5. 所有业务项目都是在IDEA下开发,没有使用Eclipse。
  6. 框架是在业务项目不断的开发中逐渐积累和完善的,功能会越来越多,bug会越来越少。

3. 源码

源码都上传到github,下载后要跑起来还需修改:

  1. 搭建自己的nexus服务,或者改造业务项目生成jar包,然后使用本地依赖方式。
  2. 所有第三方对应的密钥信息都已经修改成一些随便的数字,确保安全性,
  3. 源码里除了框架库代码,还有一个d1project项目是用于使用框架的一个webapi模板项目。如果新建一个业务项目可以通过拷贝这个项目作为基础。

本文是第一部分,第二部分主要是对d1.framework.webapi的详细介绍。

跳转到第二部分

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355