spring统一错误响应设置

在类入口增加 @RestControllerAdvice注解。可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping、@PostMapping, @GetMapping注解中。


@RestControllerAdvice@Slf4jpublic class BizExceptionHandler {

    /**     * 参数校验异常处理     */    @ResponseStatus(HttpStatus.OK)    @ExceptionHandler(某某Exception.class)    ResponseVO handleException(某某Exception exception) {

        return ResponseUtils.fail(exception.getUniteResponseCode(), exception.getMessage());
    }}

响应工具类:
public class ResponseUtils {

   /**    *     * MethodName : success    * @Description : 构建响应成功对象    * @return    */   public static <T>ResponseVO<T> success() {      ResponseVO<T> resultVO = new ResponseVO<T>();      resultVO.setCode(ResponseCodeEnum.SUCCESS.getCode());      resultVO.setMessage(ResponseCodeEnum.SUCCESS.getMsg());      resultVO.setStatus(ResponseCodeEnum.RETURN_STATUS_SUCCESS.getCode());      return resultVO;   }

   /**    *     * MethodName : success    *     * @Description : 构建响应成功VO对象    * @param data    */   public static <T>ResponseVO<T> success(T data) {

      ResponseVO<T> resultVO = new ResponseVO<T>();      resultVO.setCode(ResponseCodeEnum.SUCCESS.getCode());      resultVO.setMessage(ResponseCodeEnum.SUCCESS.getMsg());      resultVO.setStatus(ResponseCodeEnum.RETURN_STATUS_SUCCESS.getCode());      resultVO.setData(data);      return resultVO;   }

   public static <T>ResponseVO<T> success(Integer code, String msg , T data) {

      ResponseVO<T> resultVO = new ResponseVO<T>();      resultVO.setCode(code+"");      resultVO.setMessage(msg);      resultVO.setStatus(ResponseCodeEnum.RETURN_STATUS_SUCCESS.getCode());      resultVO.setData(data);      return resultVO;   }

   /**    *     * MethodName : fail    * @Description : 构建响应失败VO对象    */   public static <T>ResponseVO<T> fail() {      ResponseVO<T> resultVO = new ResponseVO<T>();      resultVO.setCode(ResponseCodeEnum.ERROR.getCode());      resultVO.setMessage(ResponseCodeEnum.ERROR.getMsg());      resultVO.setStatus(ResponseCodeEnum.RETURN_STATUS_FALSE.getCode());      return resultVO;   }

   /**    *     * MethodName : fail    *     * @Description : 自定义失败VO对象    * @param re    */   public static <T>ResponseVO<T> fail(ResponseCodeEnum re) {

      return fail(re, re.getMsg());   }

   /**    * Refactor of fail method    * @param re    * @param <T>    */   public static <T>ResponseVO<T> fail(UniteResponseCode re) {

      return fail(re, re.getMsg());   }

   /**    * Refactor of fail method    * @param re    * @param message    * @param <T>    */   public static <T>ResponseVO<T> fail(UniteResponseCode re, String message) {      ResponseVO<T> resultVO = new ResponseVO<T>();      resultVO.setCode(re.getCode());      resultVO.setMessage(message);      resultVO.setStatus(ResponseCodeEnum.RETURN_STATUS_FALSE.getCode());

      return resultVO;   }

   public static <T>ResponseVO<T> fail(Integer code, String message) {      ResponseVO<T> resultVO = new ResponseVO<T>();      resultVO.setCode(String.valueOf( code ));      resultVO.setMessage(message);      resultVO.setStatus(ResponseCodeEnum.RETURN_STATUS_FALSE.getCode());

      return resultVO;   }}


@ApiModel(value = "统一返回对象")public class ResponseVO<T> implements Serializable {

   private static final long serialVersionUID = -2977600236425403990L;

   /**    * 返回结果码,默认为成功    */   @ApiModelProperty(value = "返回结果码,默认为成功")   private String code = ResponseCodeEnum.SUCCESS.getCode();   /**    * 返回结果描述    */   @ApiModelProperty(value = "返回结果描述")   private String message = ResponseCodeEnum.SUCCESS.getMsg();

   /**    * 返回成功状态 成功T,失败F    */   @ApiModelProperty(value = "返回成功状态 成功T,失败F")   private String status;

   /**    * 返回具体数据    */   @ApiModelProperty(value = "返回具体数据")   private T data;

   public String getCode() {      return code;   }

   public void setCode(String code) {      this.code = code;   }

   public String getMessage() {      return message;   }

   public void setMessage(String message) {      this.message = message;   }

   public String getStatus() {      return status;   }

   public void setStatus(String status) {      this.status = status;   }

   public T getData() {      return data;   }

   public void setData(T data) {      this.data = data;   }

}


原文地址:https://www.cnblogs.com/java-xz/p/10518244.html

时间: 2024-10-19 17:55:48

spring统一错误响应设置的相关文章

Spring boot 错误页面

  默认效果:1).浏览器,返回一个默认的错误页面 1.1 请求头 1.2返回结果 2).如果是其他客户端,默认响应一个json数据 2.1请求头 2.2返回结果 步骤: 1)系统出现4xx或者5xx之类的错误:ErrorPageCustomizer就会生效(定制错误的响应规则): 2) 根据相应规则来到/error请求:被BasicErrorController处理: 3)响应页面:被Controller处理后去哪个页面是由DefaultErrorViewResolver解析得到的: 源码解析

HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码

原文地址:HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码 HttpServletResponse  和 ServletResponse  都是接口 具体的类型对象是由Servlet容器传递过来 ServletResponse对象的功能分为以下四种: ?        设置响应头信息: ?        发送状态码: ?        设置响应正文: ?        重定向: 设置响应头

自定义的Spring Boot starter如何设置自动配置注解

本文首发于个人网站:自定义的Spring Boot starter如何设置自动配置注解 在Spring Boot实战之定制自己的starter一文最后提到,触发Spring Boot的配置过程有两种方法: spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置: @Enable:有时需要由starter的用户触发*查找自动配置文件的过程. 实战 接着上篇文章的例子,首先将spring.factories中的内容注释掉 #org.springf

Spring AMQP 错误处理策略详解

1.介绍 异步消息传递是一种松耦合的分布式通信,在事件驱动体系结构实现中越来越受欢迎.幸运的是,Spring框架提供了Spring AMQP项目,可以帮助我们构建基于AMQP的消息传递解决方案. 另一方面,在这种环境中处理错误并不简单.本文将讨论错误处理策略. 2.配置环境 这里使用RabbitMQ实现AMQP标准.此外,Spring AMQP还提供了spring-rabbit模块,让集成更容易. RabbitMQ作为独立服务器运行.执行下面命令,在Docker容器中运行: docker run

Spring下@ResponseBody响应中文内容乱码问题

引言: 在JQuery的Ajax请求中,收到的基于后台返回回来的结果出现乱码,在后台其内容正确,到了前台之后,确是乱码??????,该怎样解决呢? 1.  问题的提出 前端基于JQuery的Ajax进行页面请求,可是收到的响应信息中的中文确是乱码:后台使用了基于Spring的@ResponseBody来对响应结果进行了封装. 2. 分析问题 2.1  JQuery前端排除 基于查看,JQuery的前端Ajax请求默认的都是基于UTF-8的请求,指定与否不影响结果信息. 假设坚持要加,在前端jav

spring异常错误信息---

在练习spring项目的过程中,出现了如下异常信息: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:145) at or

配置Spring Security 错误:Property or field &#39;ROLE_USER&#39; cannot be found

在学习http://www.mkyong.com/spring-security/spring-security-hello-world-example/时,出现以下错误: Property or field 'ROLE_USER' cannot be found on object of type 'org.springframework.security.web.access.expression. 经查发现把 <security:http auto-config="true"

7.28.1 Spring构造注入还是设置注入

1. 构造方法注入代码如下:public UserManagerImpl(UserDao userDao) {                                                  this.userDao = userDao;                                    } set注入代码如下:        public void setUserDao(UserDao userDao) {                         

使用重写的$.ajax()统一错误处理

在jquery开发中,我们经常会用到类似如下的代码: $.ajax({ url : '...', type : 'POST', data : {}, success : function(data){ //执行状态是200时候调用 }, error : function(XMLHttpRequest, msg, e){ //执行状态是非200时调用 }, complete : function(httpRequest, status){ //完成了一次请求时调用 } }); 其实往往除了url,