子模块介绍,开发规范说明和工具类封装

在上一章的内容中,我们完成了聚合工程的搭建以及工程依赖的导入

当然我们会延续上一章的传统提供一个传送门给各位,如未完成上一章内容,请点击左侧->传送门

概述子模块

上一章我们已经创建了整个聚合工程

该聚合工程有以下子模块

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 注解表示方法返回的是响应体数据,而不是视图页面。

相关推荐
拾光师几秒前
玩转springboot之springboot异步执行
java
苏少朋11 分钟前
ElementUI框架搭建及组件使用
前端·javascript·elementui
一大颗萝卜12 分钟前
【原创实现 设计模式】Spring+策略+模版+工厂模式去掉if-else,实现开闭原则,优雅扩展
java·spring·设计模式·简单工厂模式·策略模式·模板方法模式·开闭原则
da pai ge13 分钟前
虚拟机的网络配置
前端·html
IT界的奇葩20 分钟前
关于Disruptor监听策略
java·高并发·多线程·disruptor
时光足迹21 分钟前
自定义排序组件
前端·javascript·react.js
Paulloo30 分钟前
分享一个Chrome插件 倒计时功能
前端
八青妹36 分钟前
threejs(一)安装和创建第一个场景
前端
程序员微木1 小时前
【ajax实战08】分页功能
前端·javascript·ajax
爱我所爱flash1 小时前
难道 Java 已经过时了?
java·开发语言·学习