/error端点的实现来源于springboot的org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController它的具体定义如下:
从源码中可以看到,它的实现非常简单,通过调用getErrorAttribute方法来根据请求参数组织错误信息的返回结果,而这里的getErrorAttributes方法会将具体信息组织逻辑委托给org.springframework.boot.web.servlet.error.ErrorAttributes接口提供的getErrorAttributes来实现。在spring boot的自动化配置中,默认会采用org.springframework.boot.web.servlet.error.DefaultErrorAttributes作为该接口的实现(ErrorMvcAutoConfiguration)。
如下代买定义了error处理的自动化配置
该接口的默认实现采用了*@ConditionalOnMissingBean*修饰,说明DefaultErrorAttributes对象实例仅在没有ErrorAttributes接口的实例时才会被创建来使用,所以我只需要自己编写自定义的ErrorAttributes接口实现类,就能替代默认实现。简单的实例除去exception信息
public class DidErrorAttributes extends DefaultErrorAttributes{
@Override
public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
Map<String, Object> map = super.getErrorAttributes(webRequest, includeStackTrace);
map.remove("exception");
return map;
}
}
这样就可以替代了