通过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的来进行校验。
本文介绍了一种使用Hibernate Validate结合AOP实现对Controller层入参统一校验的方法,避免了在每个Controller中重复编写参数校验逻辑,提高了代码的复用性和可维护性。
273

被折叠的 条评论
为什么被折叠?



