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