在spring 3.2中,新增了@ControllerAdvice,@RestControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping中。参考帮助文档。@RestControllerAdvice 是组件注解,他使得其实现类能够被classpath扫描自动发现,如果应用是通过MVC命令空间或MVC Java编程方式配置,那么该特性默认是自动开启的

  主要配合@ExceptionHandler使用,统一处理异常情况。下面的ResponseEntity、ResponseData 都是项目自定义的返回对象。

  

import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.NoHandlerFoundException;@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {/*** 处理运行异常*/@ExceptionHandler(RuntimeException.class)public ResponseEntity<String> handleRuntimeException(RuntimeException ex) {log.error("", ex);return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST);}/*** 用来捕获404,400这种无法到达controller的错误** @param ex* @return* @throws Exception*/@ExceptionHandler(value = Exception.class)public ResponseData defaultErrorHandler(Exception ex) throws Exception {log.error("", ex);ResponseData<Object> result = new ResponseData<Object>();result.setMessage(ex.getMessage());if (ex instanceof NoHandlerFoundException) {result.setCode("404");} else {result.setCode("500");}result.setData(null);result.setSuccess(false);return result;}
}

转载于:https://www.cnblogs.com/huanshilang/p/10620048.html

@RestControllerAdvice注解使用相关推荐

  1. springboot(2.2.4)全局异常处理(RestControllerAdvice,ExceptionHandler)

    当程序出现异常我们一般try,catch处理,这样代码结构不好看,我们希望程序员写的代码业务和框架是分离的,通过注解进行绑定使用.springboot里通过@RestControllerAdvice注 ...

  2. spring的@ControllerAdvice注解

    @ControllerAdvice注解是Spring3.2中新增的注解,学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理. 对于@ControllerAdvic ...

  3. @RestControllerAdvice与@ControllerAdvice的区别

    @RestControllerAdvice注解与@ControllerAdvice注解位于同一个依赖包下面,其pom依赖为: <dependency><groupId>org. ...

  4. 校验注解:@Valid 和 @Validated区别与用法(附详细案例)

    一.案例对象 本文章会以案例为主,讲解@Valid 和 @Validated这两个注解的区别与用法. 1.首先,创建一个学生对象,如下: import lombok.Data;/*** 学生对象*/ ...

  5. SSM8==纯注解SSM项目:实现单表CRUD、事务、自定义异常和统一异常处理、RESTFUL风格接口、统一返回值格式(状态码、内容、消息)、JSON传参、axios、vue.js、elementUI

    环境:IDEA2021+JDK8+MAVEN3.8+TOMCAT7插件 前端:axios.vue.js.elementUI 后端:见POM.XML相关依赖,主要有数据库MySQL5.7 ,数据源Dru ...

  6. Spring注解大全(史上最全,字母编号,有实例)

    目录 A @Accessors 链式编程使用.需要搭配@Getter和@Setter使用.主要有三个参数: 序号 参数名 介绍 1 chain 链式 2 fluent 流式(若无显示指定chain的值 ...

  7. SpringBoot @Validated注解实现参数校验

    1. 前言 做web开发有一点很烦人就是要校验参数,基本上每个接口都要对参数进行校验,比如一些格式校验 非空校验都是必不可少的.如果参数比较少的话还是容易 处理的一但参数比较多了的话代码中就会出现大量 ...

  8. @Valid 和 @Validated 注解用法详解

    目录 案例引入 @Valid 详解 @Validated 详解 @Valid 和 @Validated 比较 案例引入 下面我们以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid ...

  9. java spring 业务异常 ExceptionController (使用@RestControllerAdvice)

    目录 1. Exception自定义基类 2. 异常捕获的Controller 3. 原理剖析 3.1 @RestControllerAdvice + @ControllerAdvice 3.2 @R ...

最新文章

  1. 【心情】期待 Mr. Jack In New York!
  2. Chemical Science | 基于金属的片段分子库用于筛选候选药物
  3. sega+model+3+android,世嘉MODEL2经典老游戏移植登场 追加联网对战
  4. IDEA中引用不到HttpServlet的解决方案
  5. stm32影子寄存器、预装载寄存器,TIM_OC1PreloadConfig和TIM_ARRPreloadConfig的作用
  6. Bottles Arrangement
  7. peewee mysql自动断开_flask+mako+peewee(下)(解决了Error 2006: MySQL server has gone away)
  8. landset8各波段_landsat8波段
  9. .net开发中用BackgroundWorker实现多线程
  10. slice 和splice 的区别 js
  11. 宁愿月薪1万招新人,却不愿给月薪5千的老员工涨薪
  12. 恶意代码防范技术原理-计算机病毒和特洛伊木马分析与防护
  13. 交换机VLAN工作模式介绍
  14. 就业管理系统(Java毕业设计:SpringBoot项目)
  15. 车牌识别的matlab程序(程序_讲解_模板),车牌识别的matlab程序(程序-讲解-模板)资料...
  16. uc浏览器黑莓java下载安装_(黑莓软件)黑莓最新版UC浏览器下载安装!8.1最新版UC浏览器!...
  17. unity 2d 动画
  18. Linux 必知必会
  19. 利用CEB-fib Model Code计算混凝土结构疲劳的方法
  20. 鉴赏百度指数,打造自己的爆款数据产品

热门文章

  1. 隐藏linux操作系统版本信息,linux centos 如何查看操作系统版本信息?
  2. Linux 驱动开发之内核模块开发(四)—— 符号表的导出
  3. Linux C 函数指针应用---回调函数
  4. python+PyQT+Eric安装配置
  5. gzip和gunzip 解压参数
  6. “约见“面试官系列之各系列目录汇总(建议学习收藏)
  7. React开发(150):注意定义数组格式
  8. [html] H5的Web Storage带来什么好处?
  9. [html] 你有了解HTML5的地理定位吗?怎么使用?
  10. [css] css中的baseline,你知道吗?