在上一章的內容中,我們完成了聚合工程的搭建以及工程依賴的導入
當然我們會延續上一章的傳統提供一個傳送門給各位,如未完成上一章內容,請點擊左側->傳送門
概述子模塊
上一章我們已經創建了整個聚合工程
該聚合工程有以下子模塊
<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數據,接下來逐一解釋。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class JsonData {
這三個注釋其實就是由Lombok庫提供的,用于自動生成常用的數據封裝方法。
/*** 狀態碼 0 表示成功*/private Integer code;/*** 數據*/private Object data;/*** 描述*/private String msg;
以上是這個類最關鍵的三個成員變量,code是和http響應碼不同的,data存放的是返回來的數據,msg用于存儲返回結果的描述和錯誤信息。
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
?對象時,可以方便地獲取存儲的數據,并將其轉換為所需的類型進行后續操作。
public static JsonData buildSuccess()
{return new JsonData(0, null, null);
}
這是一個靜態方法,用于構建表示成功的JsonData
對象,不傳入任何數據。
public static JsonData buildSuccess(Object data)
{return new JsonData(0, data, null);
}
這是另一個靜態方法,用于構建表示成功的JsonData
對象,并傳入數據。
public static JsonData buildCodeAndMsg(int code, String msg)
{return new JsonData(code, null, msg);
}
這是一個靜態方法,用于構建表示錯誤的JsonData
對象,并傳入描述信息。
public static JsonData buildResult(BizCodeEnum codeEnum)
{return JsonData.buildCodeAndMsg(codeEnum.getCode(),codeEnum.getMessage());
}
這是一個靜態方法,接收一個自定義的枚舉類型BizCodeEnum
,通過該枚舉對象的狀態碼和描述信息構建JsonData
對象。
public boolean isSuccess()
{return code == 0;
}
這是一個實例方法,用于判斷JsonData
對象是否表示成功,如果狀態碼為0,則返回true
,否則返回false
。
BizException
@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
@ControllerAdvice
//@RestControllerAdvice
@Slf4j
public class CustomExceptionHandler {@ExceptionHandler(value = Exception.class)@ResponseBodypublic 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 注解表示方法返回的是響應體數據,而不是視圖頁面。