使用APO进行统一的参数校验

通过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的来进行校验。

你可能感兴趣的:(使用APO进行统一的参数校验)