字段注解
字段注解一般是用于校验字段是否满足要求,hibernate-validate
依赖就提供了很多校验注解 ,如@NotNull
、@Range
等,但是这些注解并不是能够满足所有业务场景的。比如我们希望传入的参数在指定的String
集合中,那么已有的注解就不能满足需求了,需要自己实现。
自定义注解
定义一个@Check
注解,通过@interface
声明一个注解
@Target({ ElementType.FIELD}) //只允许用在类的字段上
@Retention(RetentionPolicy.RUNTIME) //注解保留在程序运行期间,此时可以通过反射获得定义在某个类上的所有注解
@Constraint(validatedBy = ParamConstraintValidated.class)
public @interface Check {
/**
* 合法的参数值
* */
String[] paramValues();
/**
* 提示信息
* */
String message() default "参数不为指定值";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
- @Target 定义注解的使用位置,用来说明该注解可以被声明在那些元素之前。
ElementType.TYPE
:说明该注解只能被声明在一个类前。 ElementType.FIELD
:说明该注解只能被声明在一个类的字段前。 ElementType.METHOD
:说明该注解只能被声明在一个类的方法前。 ElementType.PARAMETER
:说明该注解只能被声明在一个方法参数前。 ElementType.CONSTRUCTOR
:说明该注解只能声明在一个类的构造方法前。 ElementType.LOCAL_VARIABLE
:说明该注解只能声明在一个局部变量前。 ElementType.ANNOT