对应Java后端开发来说,Hibernate Validator参数自动化校验非常熟悉了,结合Spring Aop在接口入参自动校验功能非常强大,可配置的校验规则也非常多。不过在一些体量不是那么大的项目里,业务规则也不是特别复杂,结合Java注解,实现了一个非常简易的入参校验工具。主要包含了参数规则注解定义,以及校验逻辑实现两部分。
- 规则注解定义Rule
@Target({ ElementType.TYPE, ElementType.FIELD }) @Retention(RetentionPolicy.RUNTIME) @Repeatable(ParamRules.class) public @interface Rule { /** * 业务场景即分组名称 * * @return */ String group() default ""; /** * 是否为空标签 * * @return */ NotNull notNull() default @NotNull; /** * 字段长度 * * @return */ Length len() default @Length; /** * 长度范围 * * @return */ Size size() default @Size; /** * 区间 * * @return */ Rang rang() default @Rang; /** * 字段校验规则,正则表达式 * * @return */ Regex regex() default @Regex; }
将每个单独的规则另外定义为注解。
- NotNull
@Target(ElementType.ANNOTATION_TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface NotNull {
String message() default "";
}
- Length
@Target(ElementType.ANNOTATION_TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Length {
int length() default 0;
String message() default "";
}