Spring Boot 和 Jakarta 验证:默认使用组序列

问题描述 投票:0回答:1

我正在使用 Spring Boot 3 和 Hibernate 的 Jakarta Validation。在我的应用程序中,我有两组验证:

  1. 默认验证
  2. 仅在默认验证通过时才应运行的复杂自定义自定义

我创建了一个组序列:

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)
自动使用它?

java spring-boot hibernate-validator spring-validator jakarta-validation
1个回答
0
投票

您可以使用

@GroupSequence
注释来扩展默认验证范围。

例如,如果您添加

Foo.class

@GroupSequence({Foo.class, A.class})
static class A {

  @NotNull(groups = Foo.class)
  private Long foo;
}

然后

validator.validate(new A())
将检查
foo
是否也不为空。

有关更多信息,请参阅Hibernate 验证器参考指南

© www.soinside.com 2019 - 2024. All rights reserved.