易水工具组件

易水风萧自定义易水工具组件

Posted by yishuifengxiao on 2019-07-18

   易水风萧通用工具包说明。


    易水通用开发组件是在日常开发过程中的一些常用工具类的积累。由于深感平时在 springboot 和 springcloud 的项目过程中需要反复引入大量相同的依赖包,从而带来的极大的不便,因此将在开发过程中将一些需要反复引用的依赖聚合起来,根据不同的颗粒度进行封装,方便开发。

一 通用工具包使用说明

     易水通用工具包主要集成了目前在项目开发过程中个人经常会使用到的一些工具类,对一些常用的工具类进行了一下简单的封装。
工具包目前集成的工具有:

  1. 通用响应实体
  2. 对象工具
  3. 集合工具
  4. 加密工具
  5. 格式化工具
  6. 随机工具
  7. JSR 校验
  8. 自定义异常
  9. swagger-ui
  10. 驼峰转换等工具。

  易水通用具体已上传到maven 中央仓库

  其具体坐标为:

<dependency>
    <groupId>com.yishuifengxiao.common</groupId>
    <artifactId>common-tool</artifactId>
    <version>${版本号}</version>
</dependency>

  通用工具包的结构如下:

-com
--yishuifengxiao
----common
------tool
--------- bean            对象操作有关的工具类
--------- collections     集合操作有关的工具类
--------- convert         转换操作有关的工具类
--------- encoder         加密有关的工具类
--------- entity          常用实体类(包含通用响应实体类)
--------- exception       常用异常类
--------- format          格式化相关的工具类
--------- random          随机工具类
--------- utils           其他工具类
--------- validate        JSR校验相关的工具类

  对于通用工具包中一些常用重点工具类介绍如下:

1.1 通用返回类

  由于在日常开发过程中,经常会遇到因为每次返回给前端的响应的接口不同而导致前端需要每次都要反复与后端对接的问题,因此引入通用返回类,使得每次与前端交互时的响应结构保持一致,节省前后端沟通成本。同时采用泛型的结构,使其能较为完美地支持 swagger-ui 显示,方便形成 swagger-ui 文档。

通用返回类的完全路径如下:

com.yishuifengxiao.common.tool.entity.Response

   该工具主要用于统一定义控制层返回参数。

该工具的主要属性定义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
* 返回消息的序列号
*/
@ApiModelProperty("请求ID,用于请求追踪 .无论调用接口成功与否,"+
"都会返回请求 ID,该序列号全局唯一且随机")
@JsonProperty("requtest-id")
private String id;

/**
* 请求的响应吗,这里借用HttpStatus作为状态标识
*
* @see 具体的响应值的信息可以参见
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
*/
@ApiModelProperty("请求的响应码,这里借用HttpStatus作为状态标识,具体代码的含义请参见"+
"HttpStatus( https://developer.mozilla.org/en-US/docs/Web/HTTP/Status)")
private int code;

/**
* 返回的基本信息
*/
@ApiModelProperty("响应的简单基本信息,一般与响应码的状态对应,对响应结果进行简单地描述")
private String msg;

/**
* 返回的数据信息
*/
@ApiModelProperty("响应的数据信息,在基本基本信息无法满足时会出现此信息,一般情况下无此信息")
private T data;

/**
* 返回数据的时间
*/
@ApiModelProperty("响应的时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("response-time")
private Date date;

注意:由于开启了空字段不序列化,因此在 msg 中携带的信息就已经很充分时,在返回接口中不会再出现 data 属性字段。自此段的具体含义需要查看具体接口的具体说明。

下面是一些常见的状态码的含义:

  • 200: 请求已成功,请求所希望的响应头或数据体将随此响应返回
  • 400: 语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求;请求参数有误。
  • 401: 当前请求需要用户验证
  • 403: 服务器已经理解请求,但是拒绝执行它
  • 404: 请求失败,请求所希望得到的资源未被在服务器上发现
  • 408: 请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端可以随时再次提交这一请求而无需进行任何更
  • 422: 请求格式正确,但是由于含有语义错误,无法响应
  • 500: 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
  • 501: 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
  • 502: 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

1.2 自定义异常

   自定义异常的继承关系如下:

Exception继承关系

1.3 对象拷贝类

对象拷贝类的完全路径为

com.yishuifengxiao.common.tool.bean.BeanUtil

该工具主要用于将源对象里面的属性的值复制给目标对象。

  使用方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 将源对象里属性值复制给目标对象
*
* @param source
* 源对象
* @param target
* 目标对象
* @param converter
* 目标对象
* @return
*/
public static <S, T> T copy(S source, T target) {
BeanCopier.create(source.getClass(), target.getClass(), false)
.copy(source, target, null);
return target;
}

1.4 加密工具

加密工具的完全路径为

com.yishuifengxiao.common.tool.encoder.DES

本加密工具为对称加密,在 DES 加密算法的基础上演化而来。


二 易水聚合依赖

为了方便开发,将日常 springcloud 开发中使用到的依赖包聚合在一起,在开发 spring cloud 项目时只需要将 易水聚合依赖 引入即可。

易水聚合依赖的 maven 坐标如下:

1
2
3
4
5
6

<dependency>
<groupId>com.yishuifengxiao.common</groupId>
<artifactId>all-spring-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>

易水聚合依赖主要由 易水 springboot 依赖易水 spingcloud 依赖 整合而来,用户在使用时将版本号更新最新的版本号即可。

其定义如下:

1
2
3
4
5
6
7
8
9
<dependency>
<groupId>com.yishuifengxiao.common</groupId>
<artifactId>boot-spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>com.yishuifengxiao.common</groupId>
<artifactId>cloud-spring-boot-starter</artifactId>
</dependency>

2.1 易水 springboot 依赖

易水 springboot 依赖 主要解决在 springboot 项目开发过程中反复导入一些常见的 springboot 依赖的问题。

易水 springboot 依赖 由 易水数据层依赖易水 swagger 启动器

易水 springboot 依赖在 易水数据层依赖 和 易水 swagger 启动器 之外额外包含的依赖有

  1. redis 相关的依赖
  2. spring-session 相关依赖

易水 springboot 依赖的坐标如下:

1
2
3
4
5
<dependency>
<groupId>com.yishuifengxiao.common</groupId>
<artifactId>boot-spring-boot-starter</artifactId>
<version>${project.version}</version>
</dependency>

2.2 易水 spingcloud 依赖

易水 spingcloud 依赖主要是包含在日常 spring cloud 开发过程中,spring cloud 中的一些常见依赖,其坐标如下:

1
2
3
4
5
<dependency>
<groupId>com.yishuifengxiao.common</groupId>
<artifactId>cloud-spring-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>