Spring Boot的几种统一处理方式梳理小结
正文
为了程序返回数据友好,返回给前端的数据信息是可读的,往往会考虑将异常进行封装或者组织为结构化返回。
基于 Spring Boot 体系,原本已经提供了一些方式实现,我们今天主要聊的也是基于 Spring Boot 去解决上述问题。
@ExceptionHandler
@ExceptionHandler 可以作为统一拦截异常方式,对于指定的异常按照你想的方式自由组装返回的数据信息和结构。自由度很高,这里需要注意的一点,往往大家会在这里就直接通过response对象返回响应结果,从而导致ResponseBodyAdvice、HandlerInterceptor之类的后续处理不再触发。 所以在使用该方式时,尽可能不直接使用response.write方式返回,而是使用统一的数据结构作为处理返回值。
// 推荐
@ResponseStatus(value = HttpStatus.OK)
@ExceptionHandler(value = ConstraintViolationException.class)
@ResponseBody
public Resp<Void> onBadMethodArgumentTypeMismatchException(ConstraintViolationException e) {
return Resp.badRequest(e.getConstraintViolations().stream().findFirst().get().getMessage());
}
// 不推荐
@ExceptionHandler(Exception.class)
public void exception(Exception e, HttpServletResponse response) throws IOException {
response.setContentType("application/json;charset=UTF-8");
log.error("系统异常:", e);
response.getWriter().write($.json.toJsonString(Resp.customize(RpcResult.SERVER_ERROR, "服务器异常,请稍后再试"));
}ErrorController
Spring Boot 在发生异常的时候,如果没有异常捕捉器存在,会默认调用/error接口(可以通过server.error.path修改),类似写接口一样,对异常进行捕捉处理。
该方式优先级上会弱一点,但也是一种好方式,还可以自己实现通过配置方式处理异常,可以参考:Dew。
课外拓展
执行优先级说明
1、HandlerInterceptor.preHandle() 2、 业务方法 3、@ExceptionHandler 4、ResponseBodyAdvice.supports() 5、ResponseBodyAdvice.beforeBodyWrite() 6、HandlerInterceptor.postHandle() 7、HandlerInterceptor.afterCompletion()
以上就是Spring Boot的几种统一处理方式梳理小结的详细内容,更多关于Spring Boot统一处理的资料请关注脚本之家其它相关文章!
相关文章
Spring-Cloud Eureka注册中心实现高可用搭建
这篇文章主要介绍了Spring-Cloud Eureka注册中心实现高可用搭建,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-04-04
5分钟快速学会spring boot整合JdbcTemplate的方法
这篇文章主要给大家介绍了如何通过5分钟快速学会spring boot整合JdbcTemplate的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot整合JdbcTemplate具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧2019-12-12
Java拦截过滤器模式 (Intercepting Filter )实现方法
拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理,本文通过实例代码介绍Java拦截过滤器模式 (Intercepting Filter )的相关知识,感兴趣的朋友跟随小编一起看看吧2024-03-03
SpringBoot使用自动配置xxxAutoConfiguration
这篇文章介绍了SpringBoot自动配置xxxAutoConfiguration的使用方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-12-12


最新评论