通过Hibernate validate对入参进行校验的时候,之前一直在每一个controller里面写判断方法进行校验,这次写一个统一的切面进行参数校验。
controller方法如下:
public ReturnResult querySign(@Valid @RequestBody QueryRequest queryRequest, BindingResult bindingResult) throws Exception
AOP切面定义如下:
@Before("execution(* cn.org.bjca.enterpriseinfo.web.controller.*.*(..))&& args(..,bindingResult)") public void doBefore(JoinPoint joinPoint, BindingResult bindingResult) throws Throwable { log.info("进入切面,校验参数"); if(bindingResult.hasErrors()){ List list = Arrays.asList(joinPoint.getArgs()); log.error("参数错误,入参列表"+JsonUtil.objectToJsonString(list.get(0))); throw new BjcaBizException(ReturnCodeEnum.REQ_PARAM_ERR); }
切点标识对cn.org.bjca.enterpriseinfo.web.controller路径下的所有方法且入参的最后一个是bingdingResult的来进行校验。