springboot-统一异常处理和全局响应信息处理

152 阅读1分钟

统一返回和统一异常处理

新增响应码信息

public enum BaseResponseCode {

    SUCCESS_STATUS(1, "请求成功","请求成功"),
    FAIL_STATUS(-1,"请求失败","请求失败");


    public int getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    public String getMessage() {
        return message;
    }

    private final int code;

    private final String description;

    private final String message;

    BaseResponseCode(int code, String message, String description) {
        this.code = code;
        this.description = description;
        this.message = message;
    }

}

新增统一响应体

@Data
public class ResultBody {

    private String message;

    private Integer code;

    private Object data;

    private String serialNumber;


    public ResultBody(String message, Integer code, Object data) {
        this.message = message;
        this.code = code;
        this.data = data;
        this.serialNumber = IdUtil.randomUUID();
    }


    public static ResultBody success(Object resultData) {
        return new ResultBody(BaseResponseCode.SUCCESS_STATUS.getMessage(),BaseResponseCode.SUCCESS_STATUS.getCode(),resultData);
    }

    public static ResultBody fail() {
        return new ResultBody(BaseResponseCode.FAIL_STATUS.getMessage(),BaseResponseCode.FAIL_STATUS.getCode(),null);
    }

    public static ResultBody fail(String message) {
        return new ResultBody(message,BaseResponseCode.FAIL_STATUS.getCode(),null);
    }

}

新增统一异常处理和全局响应信息处理

@RestControllerAdvice
public class GlobalResponseHandler implements ResponseBodyAdvice<Object> {


    // 全局异常处理
    @ExceptionHandler(Exception.class)
    public ResultBody handleException( Exception e) {
        logger.error(e.getMessage());
        return ResultBody.fail(e.getMessage());
    }

    @Override
    public boolean supports(@NotNull MethodParameter methodParameter, @NotNull Class<? extends HttpMessageConverter<?>> aClass) {
        return true;
    }

    // 全局响应信息处理
    @Override
    public Object beforeBodyWrite(Object o, @NotNull MethodParameter methodParameter, @NotNull MediaType mediaType, @NotNull Class<? extends HttpMessageConverter<?>> aClass, @NotNull ServerHttpRequest serverHttpRequest, @NotNull ServerHttpResponse serverHttpResponse) {
        if (o != null) {
            logger.info(o.toString());
        }
        return ResultBody.success(o);
    }
}

@ModelAttribute和@InitBinder

blog.csdn.net/weixin_4370…