why:
为什么要用aop实现校验?
answer:
spring mvc 默认自带的校验机制 @Valid + BindingResult, 但这种默认实现都得在Controller方法的中去接收BindingResult,从而进行校验.
eg:
if (result.hasErrors()) {
List allErrors = result.getAllErrors();
List errorlists = new ArrayList<>();
for (ObjectError objectError : allErrors) {
errorlists.add(objectError.getDefaultMessage());
}
}
获取errorlists。这样实现的话,每个需要校验的方法都得重复调用,即使封装也是。
可能上面那么说还不能表明spring 的@Valid + BindingResult实现,我先举个“栗子”。
1. 栗子(旧版本)
1.1 接口层(IDAL)
eg: 简单的POST请求,@RequestBody接收请求数据,@Valid + BindingResult进行校验
httpMethid: POST
parameters:@RequestBody接收请求数据
valid:@Valid +BindingResult
@ResponseBody
@PostMapping("body")