Spring boot定制错误数据携带出去

定制错误数据

Spring boot出现错误以后,会来到/error请求
会被BasicErrorController处理,自适应返回

浏览器访问,返回页面
客户端访问,返回json
这里写图片描述

getErrorAttributes

获取返回的响应数据

在AbstractErrorController中定义
BasicErrorController的父类
这里写图片描述

BasicErrorController

处理Error请求,默认配置

@ConditionalOnMissingBean
创建条件
当容器中,没有ErrorController组件的时候
才会,创建默认的错误处理组件BasicErrorController

解决方法

1、完全来编写一个ErrorController的实现类
或者编写AbstractErrorController的子类,放在容器中

2、页面上能用的数据,或者是json返回能用的数据
都是通过errorAttributes.getErrorAttributes得到

getErrorAttributes

调用errorAttributes.getErrorAttributes
这里写图片描述
errorAttributes

@ConditionalOnMissingBean
创建条件
当容器中,没有ErrorAttributes组件的时候
才会,创建一个默认的DefaultErrorAttributes
这里写图片描述

DefaultErrorAttributes.getErrorAttributes

默认进行数据处理

自定义ErrorAttributes
为了简单,继承DefaultErrorAttributes
注入到容器中,重写getErrorAttributes方法
获取父类的Map,然后,在Map中追加

自定义的错误信息

//给容器中加入我们自己定义的ErrorAttributes
@Component
public class MyErrorAttributes extends DefaultErrorAttributes {

    //返回值的map就是页面和json能获取的所有字段
    @Override
    public Map<String, Object> getErrorAttributes(RequestAttributes requestAttributes, boolean includeStackTrace) {
        Map<String, Object> map = super.getErrorAttributes(requestAttributes, includeStackTrace);
        map.put("company","atguigu");

        //我们的异常处理器携带的数据
        Map<String,Object> ext = (Map<String, Object>) requestAttributes.getAttribute("ext", 0);
        map.put("ext",ext);
        return map;
    }
}

MyExceptionHandler

异常处理器
输出自定义异常的错误信息
可以将map,放在request请求域中

MyErrorAttributes
在request请求域中,获取ext属性

Ext,表示在异常处理器中,携带的数据
然后,追加到map中

最终效果
响应是自适应的
可以通过定制ErrorAttributes,改变需要返回的内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值