我正在使用 Spring Boot 3 和 Hibernate 的 Jakarta Validation。在我的应用程序中,我有两组验证:
我创建了一个组序列:
import jakarta.validation.GroupSequence;
import jakarta.validation.groups.Default;
@GroupSequence({Default.class, AllValidations.AfterDefaultValidations.class})
public interface AllValidations {
interface AfterDefaultValidations {
}
}
当我像这样显式调用它时,该序列按预期工作:
import jakarta.validation.Validator;
import org.springframework.stereotype.Component;
@Component
class MyService {
private final Validator validator;
public void myMethod(MyData data) {
validator.validate(data, AllValidations.class);
// ...
}
}
但是,我希望避免每次调用
AllValidations.class
或使用 validate
注释时都必须指定 @Validated
。有没有办法将此组顺序设置为默认值,以便调用 validate(data)
自动使用它?
您可以使用
@GroupSequence
注释来扩展默认验证范围。
例如,如果您添加
Foo.class
组
@GroupSequence({Foo.class, A.class})
static class A {
@NotNull(groups = Foo.class)
private Long foo;
}
然后
validator.validate(new A())
将检查 foo
是否也不为空。
有关更多信息,请参阅Hibernate 验证器参考指南。