Spring中的@RestControllerAdvice注解使用方法解析
作者:珠光
这篇文章主要介绍了Spring中的@RestControllerAdvice注解使用方法解析,@RestControllerAdvice是Controller的增强 常用于全局异常的捕获处理 和请求参数的增强,需要的朋友可以参考下
@RestControllerAdvice注解使用
@RestControllerAdvice是Controller的增强 常用于全局异常的捕获处理 和请求参数的增强
继承@ControllerAdvice、@ResponseBody等注解 它返回的数据是JSON格式的。
异常案例
@RestControllerAdvice
@Slf4j
public class ControllerExceptionHandleAdvice {
@ExceptionHandler
public R handler(HttpServletRequest req, HttpServletResponse res, Exception e) {
if (e instanceof NullPointerException) {
log.error("请求的方法名为:{},发生空指针异常:{}", req.getRequestURI(), ExceptionUtils.getStackTrace(e));
return R.fail("执行异常");
} else if (e instanceof DataIntegrityViolationException) {
String stackTrace = ExceptionUtils.getStackTrace(e);
log.error("请求的方法名为:{},数据库访问异常:{}", req.getRequestURI(), stackTrace);
if (stackTrace.contains("唯一性约束")) {
return R.fail("数据不能重复!");
} else if (stackTrace.contains("非空约束")) {
return R.fail("必填项不能空!");
} else {
return R.fail("数据库异常");
}
} else if (e instanceof SQLException) {
log.error("请求的方法名为:{},数据库访问异常:{}", req.getRequestURI(), ExceptionUtils.getStackTrace(e));
return R.fail("数据库访问执行异常");
} else {
log.error("请求的方法名为:{},服务器代码发生异常,请联系管理员:{}", req.getRequestURI(), ExceptionUtils.getStackTrace(e));
return R.fail("服务器代码发生异常,请联系管理员");
}
}
}请求参数案例
@Slf4j
@RestControllerAdvice
public class MyHandler {
/**
* 应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器
*
* @param binder
*/
@InitBinder
public void initBinder(WebDataBinder binder) {
log.info("初始化数据绑定器");
log.info(binder.getFieldDefaultPrefix());
log.info(binder.getFieldMarkerPrefix());
}
/**
* 把值绑定到Model中,使全局@RequestMapping可以获取到该值
* @param model
*/
@ModelAttribute
public void addAttributes(Model model) {
log.info("添加name参数");
model.addAttribute("name", "allen");
}
}到此这篇关于Spring中的@RestControllerAdvice注解使用方法解析的文章就介绍到这了,更多相关@RestControllerAdvice注解使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
