springboot 处理异常类存在两个 配置其优先级Order

1.背景:公司框架 做了全局异常处理,如当前接口定义请求方式是POST,但在调用的时候却使用 GET

  后台:

Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported]

   postman:

{
    "timestamp": "2022-04-02T06:35:53.646+00:00",
    "status": 405,
    "error": "Method Not Allowed",
    "message": "",
    "path": "/sendMessage"
}

  公司框架返回:

{"status":0,"statusText":"Success","data":null}

  1.2 问题出在 明明这个接口报错 ,返回的却是success 得重新处理一下这种异常

 

 2.参考

  2.1 SpringBoot中REST API的错误异常处理设计  

      2.2 Spring Boot Web: 自定义Method Not Allowed响应

      2.3 SpringBoot中这样定义全局异常处理器Global Exception Handler

 

 

 4.解决方案 代码中写一个异常处理类,并设置其优先级 

复制代码
package ins.business.common.exception;

import ins.framework.web.ApiResponse;
import ins.framework.web.advice.GlobalExceptionHandler;
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;

/**
 * 自定义异常
 */
@ControllerAdvice
@Order(1)
public class MyControllerAdvice {
    @ResponseBody
    @ExceptionHandler(value = Exception.class)
    public ApiResponse<String> exceptionHandler(Exception ex){
        ApiResponse<String> apiResponse = new ApiResponse<>();
        apiResponse.setStatus(1);
        apiResponse.setStatusText(ex.getMessage());
        return apiResponse;
    }
  
}
复制代码

 

5.order注解的理解

  order注解 主要用来控制配置类的加载顺序:数字越小,越先加载

 

 常用注解使用总结系列: @Order 注解

 短信平台 项目启动 加载配置信息到redis 的时候 使用 order注解:实现ApplicationRunner接口,执行顺序按照value值决定,值小先执行

 

6.设置Oder最高优先级代码

//最高优先级
@Order(Ordered.HIGHEST_PRECEDENCE)

 

 

 

 

 

 

 

 

 

 

 

 
 
posted @   BBS_自律  阅读(572)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
点击右上角即可分享
微信分享提示