高效精準記錄做專案中遇到的Bug與一些設計方案
BUG:複製資料pom,匯入依賴爆紅
<depedencyManagent>
<dependencies>
...
</dependencies>
</depedencyManagent>
現象:在建立父專案時,複製pom檔案如上,重新整理後爆紅,發現並沒有引入依賴
原因:dependencyManegent
是一個邏輯上的規範,主要用於統一管理依賴版本,並不會真正匯入依賴,因此才會出現部分依賴爆紅
解決方法:
- 當後續子專案中真正引入依賴時,可以不顯示的宣告依賴版本號;系統會自動向上尋找有
dependencyManegent
的pom檔案,此時才會正式引入依賴解決爆紅。 - 當然也可以直接在父專案中將所有依賴引入,先去掉
dependencyManegent
,重新整理Maven,此時會將所有依賴引入,再補上dependencyManegent
就好了。
專案如何統一時間格式
- 在相應的類的屬性上使用
@JsonFormat
註解 - 在application.yml中指定
spring.jackson.date-format: yyyy-MM-dd HH:mm:ss
和time-zone: GMT+8
專案如何統一結果返回
-
定義返回標準格式,需要包含:
code
:狀態值,統一返回結果狀態碼data
:需要返回的資料message
:結果描述timestamp
:介面呼叫時間
-
統一狀態碼
-
使用
HpptClient
中的狀態碼 -
使用自定義狀態碼列舉類
ReturnCodeEnum
@Getter public enum ReturnCodeEnum { RC200("200","success"), ; /**自定義狀態碼**/ private final String code; /**自定義描述**/ private final String message; ReturnCodeEnum(String code, String message) { this.code = code; this.message = message; } }
-
-
統一結果返回物件
@Data @Accessors(chain = true) public class ResultData<T> { private String code; private String message; private T data; private long timestamp; public ResultData() { this.timestamp = System.currentTimeMillis(); } public static <T> ResultData<T> success(T data) { ResultData<T> resultData = new ResultData<>(); resultData.setCode(ReturnCodeEnum.RC200.getCode()); resultData.setMessage(ReturnCodeEnum.RC200.getMessage()); resultData.setData(data); return resultData; } public static <T> ResultData<T> fail(String code, String message) { ResultData<T> resultData = new ResultData<>(); resultData.setCode(code); resultData.setMessage(message); return resultData; } }
專案如何統一異常處理
統一異常處理器
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ResultData<String> exception(Exception e) {
log.error("全域性異常資訊:{}", e.getMessage(), e);
return ResultData.fail(ReturnCodeEnum.RC500.getCode(), e.getMessage());
}
}
最近一次更新時間---2024/6/20