在上一章的内容中,我们完成了聚合工程的搭建以及工程依赖的导入
当然我们会延续上一章的传统提供一个传送门给各位,如未完成上一章内容,请点击左侧->传送门
概述子模块
上一章我们已经创建了整个聚合工程
该聚合工程有以下子模块
XML
<modules>
<module>xxx-common</module>
<module>xxx-account</module>
<module>xxx-engine</module>
<module>xxx-data</module>
<module>xxx-gateway</module>
</modules>
我们来一一介绍
xxx-common
这是一个公共的包,包含很多的工具类
xxx-account
关于用户相关的类
xxx-engine
最重要的模块,压测引擎,分为三大板块:接口自动化、UI自动化、压测
xxx-data
有关数据的内容
xxx-gateway
有关网关的内容
接下来就讲一下工具类
工具类封装
JsonData
这个Java类用于封装返回给客户端的JSON数据,接下来逐一解释。
java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class JsonData {
这三个注释其实就是由Lombok库提供的,用于自动生成常用的数据封装方法。
java
/**
* 状态码 0 表示成功
*/
private Integer code;
/**
* 数据
*/
private Object data;
/**
* 描述
*/
private String msg;
以上是这个类最关键的三个成员变量,code是和http响应码不同的,data存放的是返回来的数据,msg用于存储返回结果的描述和错误信息。
java
public <T> T getData(Class<T> typeReference)
{
return JSON.parseObject(JSON.toJSONString(data),typeReference);
}
先将data对象转换成JSON字符串,然后再将这个JSON字符串转换成typeReference类型的对象,最后返回这个转换后的对象。
getData()
方法使用了 JSON 库的parseObject()
和toJSONString()
方法,将JsonData
对象中的data
属性转换为目标类型的对象。这使得在使用JsonData
对象时,可以方便地获取存储的数据,并将其转换为所需的类型进行后续操作。
java
public static JsonData buildSuccess()
{
return new JsonData(0, null, null);
}
这是一个静态方法,用于构建表示成功的JsonData
对象,不传入任何数据。
java
public static JsonData buildSuccess(Object data)
{
return new JsonData(0, data, null);
}
这是另一个静态方法,用于构建表示成功的JsonData
对象,并传入数据。
java
public static JsonData buildCodeAndMsg(int code, String msg)
{
return new JsonData(code, null, msg);
}
这是一个静态方法,用于构建表示错误的JsonData
对象,并传入描述信息。
java
public static JsonData buildResult(BizCodeEnum codeEnum)
{
return JsonData.buildCodeAndMsg(codeEnum.getCode(),codeEnum.getMessage());
}
这是一个静态方法,接收一个自定义的枚举类型BizCodeEnum
,通过该枚举对象的状态码和描述信息构建JsonData
对象。
java
public boolean isSuccess()
{
return code == 0;
}
这是一个实例方法,用于判断JsonData
对象是否表示成功,如果状态码为0,则返回true
,否则返回false
。
BizException
java
@Data
public class BizException extends RuntimeException {
private int code;
private String msg;
private String detail;
public BizException(Integer code, String message) {
super(message);
this.code = code;
this.msg = message;
}
public BizException(BizCodeEnum bizCodeEnum){
super(bizCodeEnum.getMessage());
this.code = bizCodeEnum.getCode();
this.msg = bizCodeEnum.getMessage();
}
public BizException(BizCodeEnum bizCodeEnum,Exception e){
super(bizCodeEnum.getMessage());
this.code = bizCodeEnum.getCode();
this.msg = bizCodeEnum.getMessage();
this.detail = e.toString();
}
}
@Data 注解由 Lombok库提供,用于自动生成 getter、setter 方法等。
BizException 类继承了 RuntimeException,表示它是一个运行时异常。
类中定义了一些属性,包括错误码 code、错误信息 msg 和详细信息 detail。
BizException 类提供了多个构造方法,用于创建不同类型的业务异常对象。构造方法根据传入的参数设置对应的属性值。
CustomExceptionHandler
java
@ControllerAdvice
//@RestControllerAdvice
@Slf4j
public class CustomExceptionHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public JsonData handler(Exception e){
if(e instanceof BizException bizException){
log.error("[业务异常]{}",e);
return JsonData.buildCodeAndMsg(bizException.getCode(),bizException.getMsg());
}else {
log.error("[系统异常]{}",e);
return JsonData.buildError("系统异常");
}
}
}
@ControllerAdvice 注解表示这是一个全局异常处理类,用于处理应用程序中出现的异常。
@Slf4j注解添加了日志记录功能。
@ExceptionHandler注解用于指定处理异常的方法。
@ResponseBody 注解表示方法返回的是响应体数据,而不是视图页面。