记录
高效精准记录做项目中遇到的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
本文来自博客园,作者:yuxin!!,转载请注明原文链接:https://www.cnblogs.com/yuxin6924/p/18258797