组合约束

代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18

@Max(150)
@Min(0)
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {})
public @interface JAge {
    @OverridesAttribute(constraint = Max.class, name = "message")
    @OverridesAttribute(constraint = Min.class, name = "message")
    String message() default "年龄超出范围";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}


需要注意的两个地方:

  1. 类上的@Max(150),@Min(0)这两个注解是真正的实现校验的注解。
  2. message上的@OverridesAttribute,如果不存在这个,则提示信息将会为@Max和@Min的提示信息。@OverridesAttribute注解可以覆盖组合约束的一些属性

参考资料

  1. spring boot 参数校验这么做简洁实用