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

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

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

概述子模块

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

该聚合工程有以下子模块

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

相关推荐
shaibdoio5 小时前
RPA自动化获客怎么落地?瞬维AI评论区工程实践
前端·自动化·rpa·长沙瞬维ai
白露与泡影5 小时前
Spring AI Alibaba -- 文生图、文生音及向量化
java·人工智能·spring
滕州市燕猫虎计算机科技工作室个体工商户5 小时前
Java,Java NIO,Java NIO2,Java AIO,AsynchronousServerSocketChannel
java·开发语言·nio·aio·nio2
ESDWAN5 小时前
企业访问海外系统很慢,如何一步步定位问题?
服务器·网络·php
计算机魔术师5 小时前
807亿亏配900%留存:ANT招股书把AI的拧巴摊在桌上了
前端
学长毕设6 小时前
基于springboot的社会志愿者管理系统-附源码
java·spring boot·后端
未来之窗软件服务6 小时前
web网络请求竞态问题与取消方案-东方仙盟
前端·状态模式·仙盟创梦ide·东方仙盟·网络取消
木头科技6 小时前
【AI 工程化第十六篇】Spring AI 多模态 RAG 实战:图片、扫描件、表格与图文证据链
java·人工智能·spring
驭渊的小故事6 小时前
从 JVM 底层看泛型:泛型擦除、Signature 属性与 Super Type Token 模式
java·开发语言·jvm
wshzd6 小时前
LLM之Agent(120)|DeepSeek-Harness(二十七)Workflow 引擎与 Ralph 循环
前端·数据库·人工智能