自定義異常主要為首先定義一個注解:
1.自定義注解
@Target({ElementType.FIELD,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy =ConstraintValidte.class )//這個表示具體實現(xiàn)驗證的類名
public @interface Myconstract {
/**
*
* 自定義驗證注解必須保留著三個屬性因為原有注解也有這三個屬性
*/
String message() default "{javax.validation.constraints.NotBlank.message}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
···
以下為ConstraintValidte.class為具體驗證的內(nèi)容
//Object代表的是當前這個注解Myconstract只能放在field類型為Object的字段上
public class ConstraintValidte implements ConstraintValidator<Myconstract,Object> {
/**
* 這個類里面可以通過AutoWird 注入spirng的 此類不用使用注解@Compoment因為spirng看到實現(xiàn)了ConstraintValidator接口,
*
* l例如我們可以引入數(shù)據(jù)庫的接口調(diào)用驗證表單重復等信息
*
*/
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
System.out.println(value+"這是第一個自定義調(diào)研filed");
return true;
}
@Override
public void initialize(Myconstract constraintAnnotation) {
}
}
然后具體的類那里驗證就可以了

dto.png