Hibernate Validator注释不起作用

IAm*_*aja 2 java hibernate design-by-contract bean-validation

我刚刚添加hibernate-validator-5.1.3.Final.jar到我的类路径并注释了一个POJO:

public class Person {
    @NotNull
    private String name;

    // etc...
}
Run Code Online (Sandbox Code Playgroud)

然后我去用一个驱动程序测试它:

public class Driver {
    public static void main(String[] args) {
        Person p = new Person();
        p.setName(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

执行时不会抛出任何验证错误 - 我哪里出错了?

Õzb*_*bek 7

您应该运行验证引擎以检查它是否有效:

public class Driver {
    public static void main(String[] args) {
        Person p = new Person();
        p.setName(null);

      ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
      Set<ConstraintViolation<Person>> constraints = factory.getValidator().validate(p);
        // constraint will have the results of validation

    }
}
Run Code Online (Sandbox Code Playgroud)

您还需要添加javax.validation:validation-api到类路径中.大多数框架在场景后面执行这些验证逻辑以避免样板代码.