Java约束注释:将参数值传递给复合约束

Java约束注释:将参数值传递给复合约束,java,validation,annotations,Java,Validation,Annotations,我正在尝试创建自己的复合验证注释来验证字符串-到目前为止,它由注释@NotNull、@NotBlank和@Size组成 但是,我不想将这些保留为默认值,而是希望能够传入参数值,例如,如果我执行@ValidString(min=1,max=50),那么@Size注释可以读取这些值-这可能吗 我的约束- @NotNull() @NotBlank() @Size() @Constraint(validatedBy = ValidStringValidator.class) @Target({METHO

我正在尝试创建自己的复合验证注释来验证字符串-到目前为止,它由注释@NotNull、@NotBlank和@Size组成

但是,我不想将这些保留为默认值,而是希望能够传入参数值,例如,如果我执行@ValidString(min=1,max=50),那么@Size注释可以读取这些值-这可能吗

我的约束-

@NotNull()
@NotBlank()
@Size()
@Constraint(validatedBy = ValidStringValidator.class)
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
public @interface ValidString {
    String message();
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
    int min() default 1;
    int max() default 255;
}
@NotNull()
@NotBlank()
@大小()
@约束(validatedBy=ValidStringValidator.class)
@目标({方法,字段,注释类型,构造函数,参数})
@保留(运行时)
公共@接口有效字符串{
字符串消息();
类[]组()默认值{};

类否,但您的批注可以包含其他批注,例如

@NotNull()
@NotBlank()
@Constraint(validatedBy = ValidStringValidator.class)
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
public @interface ValidString {
    String message();
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
    Size size() default @Size(/*enter default size arguments here*/);
@NotNull()
@NotBlank()
@约束(validatedBy=ValidStringValidator.class)
@目标({方法,字段,注释类型,构造函数,参数})
@保留(运行时)
公共@接口有效字符串{
字符串消息();
类[]组()默认值{};
类您可以使用

@Size(最小值=1,最大值=255)
@保留(运行时)
@目标({TYPE,FIELD})
@约束(validatedBy={})
公共@接口有效字符串{
字符串消息();
类[]组()默认值{};
类别可能重复的
@Size(min=1, max=255)
@Retention(RUNTIME)
@Target({ TYPE, FIELD })
@Constraint(validatedBy={})
public @interface ValidString {
    String message();
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};

    @OverridesAttribute(constraint=Size.class, name="min")
    int min() default 1;

    @OverridesAttribute(constraint=Size.class, name="max")      
    int max() default 255;
}