SpringBoot常用的类(1)
ResponseCodeEnum.java
public enum ResponseCodeEnum {
CODE_200(200, "请求成功"),
CODE_404(404, "请求地址不存在"),
CODE_600(600, "请求参数错误"),
CODE_601(601, "信息已经存在"),
CODE_500(500, "服务器内部错误,请联系管理员");
private Integer code;
private String msg;
ResponseCodeEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
public Integer getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
ResponseVO.java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResponseVO<T> {
private String status;
private int code;
private String message;
private T data;
}
ABaseController.java
public class ABaseController {
protected static final String STATUC_SUCCESS = "success";
protected static final String STATUC_ERROR = "error";
protected <T> ResponseVO getSuccessResponseVO(T t) {
ResponseVO<T> responseVO = new ResponseVO<>();
responseVO.setStatus(STATUC_SUCCESS);
responseVO.setCode(ResponseCodeEnum.CODE_200.getCode());
responseVO.setMessage(ResponseCodeEnum.CODE_200.getMsg());
responseVO.setData(t);
return responseVO;
}
protected <T> ResponseVO getBusinessErrorResponseVO(BusinessException e, T t) {
ResponseVO vo = new ResponseVO();
vo.setStatus(STATUC_ERROR);
if (e.getCode() == null) {
vo.setCode(ResponseCodeEnum.CODE_600.getCode());
} else {
vo.setCode(e.getCode());
}
vo.setMessage(e.getMessage());
vo.setData(t);
return vo;
}
protected <T> ResponseVO getServerErrorResponseVO(T t) {
ResponseVO vo = new ResponseVO();
vo.setStatus(STATUC_ERROR);
vo.setCode(ResponseCodeEnum.CODE_500.getCode());
vo.setMessage(ResponseCodeEnum.CODE_500.getMsg());
vo.setData(t);
return vo;
}
}
AGlobalExceptionHandlerController.java
@RestControllerAdvice
public class AGlobalExceptionHandlerController extends ABaseController {
private static final Logger logger = LoggerFactory.getLogger(AGlobalExceptionHandlerController.class);
@ExceptionHandler(value = Exception.class)
Object handleException(Exception e, HttpServletRequest request) {
logger.error("请求错误,请求地址{},错误信息:", request.getRequestURL(), e);
ResponseVO ajaxResponse = new ResponseVO();
//404
if (e instanceof NoHandlerFoundException) {
ajaxResponse.setCode(ResponseCodeEnum.CODE_404.getCode());
ajaxResponse.setMessage(ResponseCodeEnum.CODE_404.getMsg());
ajaxResponse.setStatus(STATUC_ERROR);
} else if (e instanceof BusinessException) {
//业务错误
BusinessException biz = (BusinessException) e;
ajaxResponse.setCode(biz.getCode() == null ? ResponseCodeEnum.CODE_600.getCode() : biz.getCode());
ajaxResponse.setMessage(biz.getMessage());
ajaxResponse.setStatus(STATUC_ERROR);
} else if (e instanceof BindException || e instanceof MethodArgumentTypeMismatchException) {
//参数类型错误
ajaxResponse.setCode(ResponseCodeEnum.CODE_600.getCode());
ajaxResponse.setMessage(ResponseCodeEnum.CODE_600.getMsg());
ajaxResponse.setStatus(STATUC_ERROR);
} else if (e instanceof DuplicateKeyException) {
//主键冲突
ajaxResponse.setCode(ResponseCodeEnum.CODE_601.getCode());
ajaxResponse.setMessage(ResponseCodeEnum.CODE_601.getMsg());
ajaxResponse.setStatus(STATUC_ERROR);
} else {
ajaxResponse.setCode(ResponseCodeEnum.CODE_500.getCode());
ajaxResponse.setMessage(ResponseCodeEnum.CODE_500.getMsg());
ajaxResponse.setStatus(STATUC_ERROR);
}
return ajaxResponse;
}
}

浙公网安备 33010602011771号