本文共 1642 字,大约阅读时间需要 5 分钟。
定义一个异常类:
/** * 异常 */public class CheckException extends Exception { public CheckException(String message) { super(message); }}
定义一个aop(注解形式使用)
定义注解:
为什么这么定义的解释:
@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface CheckUrl {}
定义aop,这是一个判断传参是否为空的aop:
@Component@Aspectpublic class UrlCheckAspect { //定义的注解的位置 @Before("@annotation(com.config.aop.CheckUrl)") public void doInputCheckBefore(JoinPoint joinPoint) throws Throwable { Object[] paramValues = joinPoint.getArgs(); String[] paramNames = ((CodeSignature)joinPoint.getSignature()).getParameterNames(); StrBuilder strBuilder = new StrBuilder(); for (int i = 0; i < paramNames.length; i++) { if(paramValues[i] == null){ strBuilder.append(paramNames[i]).append("必传 "); } } if (StringUtils.isNotEmpty(strBuilder.toString())) { throw new CheckException(strBuilder.toString()); } }}
定义全局异常:
@ControllerAdvicepublic class GlobalExceptionConfig { @ResponseBody @ExceptionHandler(CheckException.class) //HttpResponse:格式化返回值的一个util public HttpResponse checkUrlException(CheckException e) { return HttpResponse.fail(e.getMessage()); }}
使用方式:
判断前端传过来的userId是否为空,必须加“required = false”,如果不加会被框架打回,得不到我们想要的结果
//判断前端传过来的userId是否为空 @CheckUrl @GetMapping("/get_by_id") public HttpResponse getUserById(@RequestParam(required = false) Long userId) { User byId = userService.getById(userId); return byId == null ? HttpResponse.fail("用户不存在") : HttpResponse.success(byId); }
转载地址:http://crmjz.baihongyu.com/