记录

高效精准记录做项目中遇到的Bug与一些设计方案

BUG:复制资料pom,导入依赖爆红

<depedencyManagent>
    <dependencies>
        ...
    </dependencies>
</depedencyManagent>

现象:在创建父项目时,复制pom文件如上,刷新后爆红,发现并没有引入依赖

原因:dependencyManegent是一个逻辑上的规范,主要用于统一管理依赖版本,并不会真正导入依赖,因此才会出现部分依赖爆红

解决方法:

  • 当后续子项目中真正引入依赖时,可以不显示的声明依赖版本号;系统会自动向上寻找有dependencyManegent的pom文件,此时才会正式引入依赖解决爆红。
  • 当然也可以直接在父项目中将所有依赖引入,先去掉dependencyManegent,刷新Maven,此时会将所有依赖引入,再补上dependencyManegent就好了。

项目如何统一时间格式

  1. 在相应的类的属性上使用@JsonFormat注解
  2. 在application.yml中指定spring.jackson.date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8

项目如何统一结果返回

  1. 定义返回标准格式,需要包含:

    1. code:状态值,统一返回结果状态码
    2. data:需要返回的数据
    3. message:结果描述
    4. timestamp:接口调用时间
  2. 统一状态码

    1. 使用HpptClient中的状态码

    2. 使用自定义状态码枚举类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;
          }
          
      }
      
  3. 统一结果返回对象

    @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

posted @ 2024-06-20 17:03  yuxin!!  阅读(5)  评论(0编辑  收藏  举报