1.前言
参数校验是个好东西,可以避免很多重复无用的校验代码,但是还需要使用 @Validation 或 @Valid 方式,声明启用参数校验。当项目规范要求都使用参数校验时,这样就写了很多无用的声明代码。
2.实现默认使用参数校验,无须使用 @Validation 或 @Valid 注解声明
@Aspect
@Component
public class ValidationAspect {
@Pointcut(value = "execution(* com.example.sso.provider.controller.*.*(..))")
public void pointcut(){
}
@Before("pointcut()")
public void before(JoinPoint point){
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Object[] args = point.getArgs();
Set<ConstraintViolation<Object>> set = new HashSet<>();
for (Object arg : args) {
set.addAll(validator.validate(arg));
}
if (!set.isEmpty()) {
// 参数校验失败处理
}
}
}