自定义注解

来源:互联网 发布:长歌门成女捏脸数据 编辑:程序博客网 时间:2024/06/02 06:51

参考:http://developer.51cto.com/art/201104/253257_all.htm

一.简单的注解

@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})@Retention(RetentionPolicy.RUNTIME)@Documented@Constraint(validatedBy = {XXXXXXX.Validator.class})public @interface XXXXXXX{    String message() default " ";    Class<?>[] groups() default {};    Class<? extends Payload>[] payload() default {};    class Validator implements ConstraintValidator<XXXXXXX, String> {                @Override        public void initialize(XXXXXXX paramA) {        }        @Override        public boolean isValid(String paramT,ConstraintValidatorContext context) {           //写验证,不通过时 return false;            return true;        }     }}

其中被校验的String 也可以是对象,这样可以验证一个对象中多个值间的关系

二.注意

1.级联验证

使用 @Valid 注解  比如内部类中的参数

2.多值约束

只需要在定义约束注解的同时定义一个 List(@interface List{})。使用该约束注解时,Bean Validation 将 value 数组里面的每一个元素都处理为一个普通的约束注解,并对其进行验证,所有约束条件均符合时才会验证通过。

@Target({ METHOD, FIELD, ANNOTATION_TYPE})   @Retention(RUNTIME)   @interface List {     NotEmpty2[] value();   }