Spring 在非 MVC 应用程序中验证

Spring validation in non MVC application

是否可以在非 MVC 应用程序中以类似于在 MVC 控制器中完成的方式验证 POJO class?

例如:

public class Form {
    @NotNull
    @Size(min = 4, max = 25)
    private String login;
    ...
}

然后:

Form f = new Form();
f.setLogin("login");

现在我想将它传递给某种验证器,它将根据注释测试所有字段,就像@Valid 在 MVC 中所做的那样。

请注意,我想通过注释来验证字段。我不想写所有验证条件,例如 if (login.lenght() < 4 && ....

这可能吗?

您可以使用 Hibernate Validator,它是 Java Bean Validation 规范的一个实现 - 在 JDK 环境(无 JEE)中工作,如 here

所述

Hibernate Validator 允许您添加注解,然后 运行 根据该注解进行验证,如下所示:

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
Set<ConstraintViolation<?>> constraintViolations =
  validator.validate(objectToValidate);

然后您可以检查 constraintViolations 集合是否有错误。