八、SpringBoot覆盖默认的错误处理方式

本文介绍了如何覆盖SpringBoot的默认错误处理方式,包括自定义ErrorController接口的bean、继承BasicErrorController以及调整响应内容格式,以提升用户体验和与前端的配合。详细探讨了BasicErrorController的源码和实现策略。
摘要由CSDN通过智能技术生成

覆盖默认的错误处理方式

默认错误处理机制的响应内容格式不一定是你相中的。理由可能如下:

  1. “Whitelabel Error Page”页面的样式太单调,用户体验不好。
  2. Json格式的结果字符串不统一,与你配合的前端人员更希望统一格式,好做统一的显示处理。比如与前端人员配合时统一指定响应结果格式为“{status:true,msg:”xxx”,data:{xxx}}”,但Spring Boot的Json格式是{status:500,message:”error occur”,path:”/exception”……}。

    那么你可能更期望可以修改默认的处理方式,改变响应内容格式。Spring Boot开发指南上给出了几种方法。

    • 自定义一个bean,实现ErrorController接口,那么默认的错误处理机制将不再生效。
    • 自定义一个bean,继承BasicErrorController类,使用一部分现成的功能,自己也可以添加新的public方法,使用@RequestMapping及其produces属性指定新的地址映射。
    • 自定义一个ErrorAttribute类型的bean,那么还是默认的两种响应方式,只不过改变了内容项而已。
    • 继承AbstractErrorController

BasicErrorController源码

SpringBoot在页面 发生异常的时候会自动把请求转到/error,SpringBoot内置了一个BasicErrorController对异常进行统一的处理,当然也可以自定义这个路径
application.yaml

server:
  port: 8080
  error:
    path: /custom/error

BasicErrorController提供两种返回错误一种是页面返回、当你是页面请求的时候就会返回页面,另外一种是json请求的时候就会返回json错误:

 @RequestMapping(produces = "text/html")
    public ModelAndView errorHtml(HttpServletRequest request,
            HttpServletResponse response) {
        HttpStatus status = getStatus(request);
        Map<String, Object> model = Collections.unmodifiableMap(getErrorAttr
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值