微信
手机版
网站地图

罗森,根据SpringBoot的WebAPI开发结构,怒江之战

2019-04-01 11:36:39 投稿人 : admin 围观 : 167 次 0 评论
依据SpringBoot的WebAPI开发结构

台有必要从头建立罗森,依据SpringBoot的WebAPI开发结构,怒江之战一个内部的开发结构,由于没有前史堆集,直接运用SpringBoot作为根底结构,在此之上再做一个封装。

共享出来给咱们参阅,此结构适应于中小企业Java完成的WebAPI项目(前后端别离)。咱们能够直接运用,可是最好仍是了解并修正成适用自己团队的结构。

1.根本结构

依据SpringBoot的WebAPI开发结构

如上图,咱们的结构包括许多库,其间d1.framework.webapi和d1.framework.cache是一切webapi项目都有必要依靠的,其它的库是看需求挑选依靠的。下面列出一切库的根本功用:

d1.framework.webapi: 事务项目依靠的根本库,包括springboot相关许多功用的封装,比方Application、Entity、Service、Controller等基类,还有swagger、跨域,权限一致认证,日志相关等等,后边独自阐明。

d1.framework.cache: 缓存相关的库,由于d1.framework.webapi依靠这个库,所以一切事务项目也都依靠它,一个接口外加ehcache和redis的完成,实践事务项目中挑选一种就能够。

d1.fra王荣调任安徽省长mework.dayecaostorage: 不是有必要依靠的库,一个接口外加本地文件存储和七牛云存储的完成。

d1.framework.util:不是有必要依靠的库,完成一系列东西类,是在事务项目开发过程中逐步堆集的一些和事务无关的静态办法。

d1.framework.push:不是有必要依靠的库,完成极光推送,这个是咱们团队比较常用的app推送第三方库的封装。

d1.framework.sms:不是有必要依靠的库,一个接口外加二种第三方的短信封装,首要用于注册等短信验证。

d1.framework.weixin呀咩嗲是什么意思:不是有必要依靠的库,微信小程序、大众号、app等开发渠道相关封装。

d1.framework.ocr: 不是有必要依靠的库,封装了阿里的二个图形辨认效劳,也是实践事务项目用到了后封装的。

d1.framework.mqttclient:不是王瀚琨有必要依靠的库,是对mqtt协议的完成,也是对一个开源库的封装。

2. 根本阐明

springboot现已十分便利了,可是仍是有必要把一些重复的不变的功天愿结婚庆能封装成结构,开发结构和开发事务应该分隔。

结构哆拾惠里有一些咱们团队特有的约好,并不必定合适一切人的习气。

一切事务项目运用gradle东西构建,首要是觉得g御天刀帝radle比maven更简练。

结构一切项目都上传到咱们内部的Nexus

建立的maven库,建立的办法能够参阅我以前发的贴。 事务项目经过gradle来装备依靠:

repositories {

mavenCentral()

maven{ url 'http://你的nexus库地址/repository/d1-java/'}

}

除d1.framework.webapi库强制依靠springboot以外,其它库都没有依靠springboot,这样其它库也能够很便运用于非springboot的事务项目

大部分库都是先界说接口,再对这个接口进行完成,一般有好几种完成。

许多第三方库现已很简略了,可是仍是有必要做一次封装,首要仍是第三方库功用许多,可是咱们一般用到的很少,并且有许多缺省用法,封装后运用更简略,也能让第三方库版别改变后对现有事务项目也没影响。

每个库项目都由一个springboot事务项目作为测验库的进口以及一个库实在完成的module,这个module修正完后build成jar包并推送到nexus效劳上。

一切事务项目都是在IDEA下开发,没有运用Eclipse。

结构是在事务项目不断的开发中逐步堆集和完善的,功用会越来越多,bug会越来越少。

3. 源码

源码都上传到github重生写轮眼都市纵横,下载后要跑起来还需修正:

建立自己的nexus效劳,或许改造事务项目生成jar包,然后运用本地依靠办法。

一切第三方对应的密钥信息都现已修正成一些随意钟鸿刚的数字,保证安全性,

源码里除了结构库代码,还有一个d1project项目是用于运用结构的一个webapi模板项目。假如新建一个事务项目能够经过复制这个项目作为根底。

d1.framework.webapi 库是根底封装,每个 webapi 项目都有必要运用,里边包括功用许多。

1. BaseApplication

一切事务项目的主进口 Application 类都需承继此类

@SpringBootApplication

public class DemoApplication extends BaseApplication{

}

这个类首要是增加几个缺省注解,比方激活 Swagger,保证对包进行扫描是从 d1 开端。

所以约好咱们一切的事务项目的 package 都是 d1 最初,比方d1.project.xxxx

@EnableSwagger2

@ComponentScan("d1")

@EntityScan("d1")

@EnableJpaRepositories("d1")

public class BaseApplication {

}

2. 封装 webapi 接口的回来 Result

一切 controller 回来的值都是一个 Result 目标,根本结构是

{

"code": 1,

"msg": "回来的音讯,一般是字符串",

"data": "回来的数据,一般又是一个json目标"

}

运用办法:

return ResultUtil.result(10001,"自界说的音讯",数据目标);

return ResultUtil.fail("自界说的音讯",数据目标);

return ResultUtil.success("自界说的音讯",数据目标);

3. ControllerAdvice

运用注解 @ControllerAdvice 完成一致阻拦处理一切 controller 没有 catch 的过错

@ExceptionHandler(Exception.class)

@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)

@ResponseBody

public Result all(Exception e) {

return Result许东海Util.result(ResultCode.UN_CATCH_ERROR.code, e.g植组词etMessage(), e);

}

4. 封装Swagger主动生成API文档

只需求在 application.properties 装备文件里增加以下几个装备,事务项目的 API 文档就能够主动生成并以效劳的办法来拜访,拜访的url是http://域名或地址/swagger-ui.html#/

#application.properties

d1.framework.webapi.swagger.enable=tru飞检是什么意思e #出产环境下一般改成false

d1.framework.webapi.swagger.title=项目的标题

d1.framework.webapi.swagger罗森,依据SpringBoot的WebAPI开发结构,怒江之战.desc=项目的描绘

d1.framework.webap龙江航空公司官网i.swagger.version=项目API的版别

d1.framework.webapi.swagger.host=www.xxxx.com:8089

在 contorller 里运用注解符号 API 的办法参阅文档

4. 跨域设置

只需求在 application.properties 装备文件里增加以下装备,事务项目的前端页面能够完成跨域拜访,当然出产环境的时分需求严格控制可跨域的域名。

#application.prope魅笑魔主rties

#生成环境需求把*换成实在的域名,多个域名能够用逗号离隔

d1.framework.webapi.cors=*

5. BaseEntity

这是一切 Entity 的基类,首要是强行设置一个字段叫 Id,这个 Id 缺省是32位 uuid,在事务体系上主张一切 entity 都承继它。

6. User相关封装

DoUserBaseEntity 界说了用户表的常用字段,事务体系直接承继做一些扩展就能够了。

DoUserServiceImplBase 完成用户相关的罗森,依据SpringBoot的WebAPI开发结构,怒江之战 service,首要是创立 token,登录验证 token,缺省 token 都是用 d1.framework.cache 来缓存。

7. Auth相关

这儿也是依据团队内部的一个约好,一切 webapi 接口假如需求验证权限,都需求在 http 恳求的 header 里设置 Authorization 特点,特点的值有2种状况:

Authorization = token xxxxxxx 表明是经过用户登录后回来的 token 来验证

Authorization = sign xxxxxxx 表明效劳间经过 HMAC 签名来校验

界说AuthFilter(承继Filter)来验证用户的恳求Header里的Authoriztion对应的值假如是token的话,从d1.framework.cache里对应的缓存里查询toke凭鬼屋n是否存在并是否没有过期。

别的经过界说一个自界说的注解Auth来设定web api接口是归于某种特定的用户。

@Auth("webadmin")

@RestController

@RequestMapping("/webadmin/user")痞侠大战倭寇

@Api(value = "/webadmin/user", description = "办理用户办理")

public class WebAdminUserController extends DoBaseController {

......

}

@Auth("webadmi罗森,依据SpringBoot的WebAPI开发结构,怒江之战n")标识这个controller里一切办法都有必要是webadmin用户登录后才能够拜访,这个注解也能够独自给特定办法运用

8. DestroyEhcacheBean

JVM 退出时先 shutdown ehcache,保证内存里的 cache 内容正确写入本地文件

public class DestroyEhcacheBean implements DisposableBean, ExitCodeGenerator {

......

@Override

public void destroy() throws Exception {

if (cache != null)

cache.shut罗森,依据SpringBoot的WebAPI开发结构,怒江之战Down();

}

}

9. D超级特警归纳体系oServiceImpBase

包括 service 常用办法,罗森,依据SpringBoot的WebAPI开发结构,怒江之战其它 service 都承继这个办法,里边首要包括根本的增修改查,这是一个 abstract 办法,最首要是需求子类承继的时分回来一个实践的 dao 类。

这个基类还完成了依据 token 查询对应的用户目标。

public abstract class DoServiceImpBase {

......

protected abstract JpaRepository getDao();

......

}

10. DoBas托付啦学妹eController类

controller 基类,封装了最根本的增修改查,子类只需求承继,常见的接口都已界说。

11. 日志

在项目的resource下有一个 logback.xml,没有特别的需求的话,一切事务体系都能够用这个默许的日志装备。

别的界说了一个 LoggerController 完成经过 webapi 接口检查日志和下载日志文件,这样达州宣汉气候长途就能够检查日志。

12. HMACSignService

增加HMAC校验签名的基类service, 完成了效劳间HMAC接口验证办法,规矩参阅微信的效劳校验

13. SignInRetryLimitService

封装用户登录重试次数校验,超越必定次数将被锁住不能再试了。

需求在application.properties里增加2个装备:

#登录暗码过错重试的次数,没有这个值或值为0表明不约束

d1.framework.webapi.sign-in.retry-count=5

#登录暗码过错重试到必定次数后,锁住用户一段时间,单位是分钟

d1.framework.webapi.sign-in.lock-period=60

运用这个效劳经过3个函数:

if (user == null) throw new Exception("用户:" + username + "不存在");

if (retryService.verifyIsLocked(username)) throw new Exception("用户重试过错暗码屡次,导致用户被锁");

if (!user.getPassword().equals(password)) {

retryService.signInWithWrongPwd(username);

throw new Exception("暗码不对");

}

retryService.signInSuccess(username);

以上是 d1.framework.webapi 的根本功用,许多功用都是在开发实践项目的过程中逐步增加上去的,包括的功用是杂七杂八的需求。

其它库都罗森,依据SpringBoot的WebAPI开发结构,怒江之战是针对特定的功用,这儿不逐个胪陈了。

相关文章

  • 我的世界下载,大风起兮云飞扬-极限挑战第五季内容赏析
    我的世界下载,大风起兮云飞扬-极限挑战第五季内容赏析

    我的国际下载,劲风起兮云飞扬-极限应战第五季内容赏析 原标题:日本7-Eleven母公司将重组:关店超彭伯里庄园千家,裁人3000多人...

    2019-10-16 04:49:22
  • 证监会主席,我们结婚了-极限挑战第五季内容赏析
    证监会主席,我们结婚了-极限挑战第五季内容赏析

    恒彩测速 证监会主席,咱们成婚了-极限应战第五季内容赏析 广州丽盈塑料有限公司 据央视新闻音讯,当地时间10月11日,美国...

    2019-10-16 04:45:27
  • 听歌,血友病-极限挑战第五季内容赏析
    听歌,血友病-极限挑战第五季内容赏析

    原标题:“空降”吉林,尹伊君被提名为科斯莫利基德省查看院查看长提名人 尹伊君曾担任聂树斌案再审办案组成员。 据《吉林...

    2019-10-16 04:43:40
  • 青岛,李香兰-极限挑战第五季内容赏析
    青岛,李香兰-极限挑战第五季内容赏析

    b裤 砺石导语:执念于做职业老迈的张力和李思廉,地产生意一度做到职业第4。可是,继2008年商业地产过度扩张、2014年失去一线城市盈利之后,2017年又以199亿元蚕食万达旗...

    2019-10-15 05:02:02
  • 中国英文,猎户家的小娘子-极限挑战第五季内容赏析
    中国英文,猎户家的小娘子-极限挑战第五季内容赏析

    美妙小镇第二季 来历:煜聊科技 近年来,跟着网购的迅速发展,每到双十一等大型购物节,一众电商以及快递公司都忙得脚不沾地,往常两到三天就能到的快递,高精门峰期也要一个周左右。而...

    2019-10-15 04:57:55
  • 我是真的爱你,罗布麻-极限挑战第五季内容赏析
    我是真的爱你,罗布麻-极限挑战第五季内容赏析

    [摘要超汇玩文娱] 本年前三季度,安纳达录得运营收入同比跌落7.94%,归属于上市公司股东的净赢利同比跌落40.87%,营收及净赢利双双下降。 文/年代财经 何蕴虹 10月9...

    2019-10-15 04:57:49
  • dota2,岑参的读音-极限挑战第五季内容赏析
    dota2,岑参的读音-极限挑战第五季内容赏析

    宋薇张豪 “电脑检测、手机跑分”根本上市年轻一代互联网用户人尽皆知的产品检测办法撺组词。移动互联网当道年代,在手机厂商的尽力下,手机跑分简直成了手机发布会的必备的压轴戏。但渐渐...

    2019-10-15 04:55:23
  • 情趣用品,洛克王国-极限挑战第五季内容赏析
    情趣用品,洛克王国-极限挑战第五季内容赏析

    【环球网报导 记者 王博雅琪】华情趣用品,洛克王国-极限应战第五季内容赏析纳兄弟公司发行的惊悚片《小丑》自4日上映以来就备受言论争议,有批评者责备该片有美化和怜惜暴力之嫌,更...

    2019-10-14 04:52:11
  • 李狗嗨,国海证券-极限挑战第五季内容赏析
    李狗嗨,国海证券-极限挑战第五季内容赏析

    富钟水牛 最近,印先森上新了M02S口屠戮教室袋农门弃妇天才宝宝腹黑打印机,信封的外形一会儿就戳中我这个文艺老青年的心。 正好手里还有之前买的喵喵机P2,趁着这个阳光明媚的午后...

    2019-10-14 04:48:23
  • 一转成双,yy6090青苹果影院-极限挑战第五季内容赏析
    一转成双,yy6090青苹果影院-极限挑战第五季内容赏析

    新京报快讯(记者 沙雪良)10月8日,我国人大网发布《中华人民共和国公职人员政务处置法(草案)》全文,面向社会征求定见。 草案提出,公职人员不因提出复审、复核、李研静申述而被...

    2019-10-13 04:58:19
标签列表