在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;
}
}

最新文章

  1. ASP.NET SignaiR 实现消息的即时推送,并使用Push.js实现通知
  2. ASP.NET知识总结(2.对比Get和Post提交方式)
  3. Android开源项目
  4. C语言课设心得分享(一)
  5. HTML 基础知识——8月8日
  6. 真正通用的SQL分页存储过程
  7. java中判断是否为中文
  8. Spark:用Scala和Java实现WordCount
  9. I Take It All Back: Using Windows Installer (MSI) Rollback Actions
  10. App.Config 在windows 服务中的应用问题
  11. mongoDB初探
  12. validatebox验证框架rules
  13. Oracle EBS-SQL (WIP-9):检查车间任务超发料.sql
  14. ubuntu14.04LTS ruby on rails 开发环境
  15. Ambari中添加新服务
  16. 【渗透课程】前言-揭开Web渗透与安全的面纱(必看)
  17. REACT相关资料合集
  18. ubuntu 安装lnmp、swoole、redis
  19. STM32串口usart发送数据
  20. (转)kafka实战教学

热门文章

  1. bzoj 3527 [Zjoi2014]力——FFT
  2. 蓝桥杯 基础训练 BASIC-27 2n皇后问题
  3. springboot+springcloud config
  4. eclipse项目中将普通文件夹转化成资源文件夹
  5. JAVA基础知识(16)-----Integer
  6. OpenGL渲染流水线
  7. JavaScript语言基础-对象与数组
  8. SqlServer——存储过程(未完工)
  9. 6-EasyNetQ之订阅
  10. Java通过JDBC 进行Dao层的封装