Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
毫无疑问,是编写后台服务的最流行的Java框架了,基于默认配置的可以让你编写后台服务变得异常简单,以下我整理了项目中的常见模块的整合整理,希望对你有帮助;
SpringBoot常用模块整合
接口认证数据库操作:MyBatis+代码自动生成代码自动生成使用步骤Dubbo微服务整合API文档Swagger整合数据返回支持JSON和XML后台表单字段检验概述分库分表技术Redis整合:对象缓存/发布订阅使用`Redis`的`发布订阅`模式对象缓存使用接口安全鉴权参数鉴权验签举例日志中心整合总线整合(待补充)
接口认证
Restful API的认证一般通过利用用户名和密码,换取token获得,这个token一般有时效,建议24小时,如果你的API接口需要认证才能使用,按以下步骤:
与的映射关系一般被保存在缓存中,可以是,或本地缓存都可以,以下以Guava Cache为例:
(可选)引入 guava 依赖,如果你使用其他缓存框架,请忽略
以下代码定义一个缓存对象:
缓存读写:
添加一个拦截器:
在类里加入拦截器,如下:
这样,如果访问:http://localhost:9333/api/v2/test/hello?token=test
这个地址,必须传入token参数,否则会返回错误,后台可根据参数的值获取当前登录用户信息
数据库操作:MyBatis+代码自动生成
代码自动生成
使用类自动生成,和,内含基本的数据库操作,将自动生成的代码拷贝到工程的src目录下即可,以下是配置步骤:
使用步骤
maven配置
编写一个类,如下:
配置,使用druid数据源
基本的数据库操作可采用写法,如保存或新增User:
或采用本身提供了几十个方便的数据库操作,如查找ID为1的User:
具体可参看官方文档,点击这里
Dubbo微服务整合
如果您的项目需要调用微服务,作为服务的消费方,请按以下步骤进行:
引入maven依赖
配置dubbo信息,在文件中,加入:
开始使用
在Controller中引入Dubbo服务,如下:
API文档Swagger整合
详见:使用SwaggerUI生成API文档
数据返回支持JSON和XML
作为一个开放平台,我们可能需要对响应的数据格式支持多种形式,目前主流的是JSON和XML,那么一个接口,如何根据传入的参数同时支持这两种格式,以下步骤:
引入 依赖
编写一个自定义的,如下:
注:SpringBoot2以后,是过期的,应该使用
这样,当我们访问:
http://localhost:9333/api/v2/test/hello?format=xml
时返回的是XML格式,否则默认是json格式,即如果要返回XML格式,在Restful API的接口后面加入参数
后台表单字段检验
概述
前台的参数信息提交到后台,后台可能需要检验某些参数的合法性,这时候我们可以使用,按如下步骤:
引入maven
对请求参数校验
接口引入注解,如:
合法请求:
http://localhost:9333/api/v2/reg?username=test&nick=ss&age=23&password=2323324234
非法请求:
密码不通过:http://localhost:9333/api/v2/reg?username=test&nick=ss&age=23&password=232
输出:
分库分表技术
详见《分库分表技术》
Redis整合:对象缓存/发布订阅
Redis使用场景:
:后台服务可将消息实时推送给频道上,或其他服务订阅来自的频道消息,将数据实时推送给端,或后台服务本身接收来自的频道消息;
:可用于将后台的任意对象缓存起来,根据定义的缓存策略;
以下介绍两者的使用步骤
共有步骤
依赖引入
类定义
定义配置文件,如下:
以上我们配置好了,然后就可以在项目中使用了
使用`Redis`的`发布订阅`模式
可以新建一个的类,编写发布和订阅方法,如下:
在中只需要 RedisService即可调用发布订阅方法
对象缓存使用
需要对对象进行缓存,只需要使用注解即可,如下:
接口安全鉴权
参数鉴权
自行设置一套app申请后台,让用户申请appid和app-seckey;
对调用接口的参数列表按
对K升序排列,得到有序参数列表;
将应用密匙以app_key为键名,组成URL键值对拼接得到字符串S(key1=value1&key2=value2&…&app_key=密匙)
对字符串S做MD5运算,得到MD5全转为大写,得到接口请求签名sign;
签名有效期为5分钟,参数值为Null不参与签名,V必须使用URL编码(https://tools.ietf.org/html/rfc1738)
验签举例
参数名 参数值
app_id 8
time_stamp 1532504664
nonce_str xxx
sign值:
注:接口鉴权应用在针对安全性高标准的接口,如涉及交易,下订单等操作,应用在开放平台的高安全性的接口中
日志中心整合
主要思路是自定义,然后将日志通过发往日志中心,详见《基于Netty的日志采集中心设计与实现》
领取专属 10元无门槛券
私享最新 技术干货