在我们平时开发中经常需要对前端参数进行校验,很多人都是写一个CheckUtils,拿到前端的DTO后一个个进行判断,这篇博客主要是基于spring提供的aop功能和Java的反射机制实现切面参数校验,相对于对每个接口写一个校验工具类来说更为优雅。
1.首先我们来定义两个注解类Verifys和Verify
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Verifys { }
Verifys该注解用于方法上面,主要是为了使用aop
Verify该注解主要用于参数规则的定义,可以根据自己的需求去增删方法
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Verify { /** 参数名称 */ String name(); /** 参数最大长度 */ int maxLength() default Integer.MAX_VALUE; /** 是否必填 */ boolean required() default false; /** 最小长度 */ int minLength() default Integer.MIN_VALUE; /** 正则匹配 */ String regular() default ""; }
2.定义切面ParameterVerify,利用反射实现对象属性的规则校验
@Component
@Aspect
public class ParameterVerify {
@Before(value=