是否可以使用验证 API 来验证模型对于某些外部操作是否正确?

Is it possible to use the Validation API to validate that a model is correct for some external operation?

好的,所以我们希望允许用户进行手动迁移。为此,模型对象必须处于特定状态。我不想自动验证此 class 的每个实例或此 class 的任何实例。我知道如何手动调用验证器(一般情况下),但我想知道的是 我可以在模型上没有这些注释的情况下执行验证器吗?我只想对模型执行任意验证代码。想要使用验证的原因 api 是因为它收集约束违规。

例如像这样的东西

class ValidForMigration implements ConstraintViolation<MyModel> {
  boolean isValid( MyModel model ) {
      if ( model.getFoo() == null ) { return false; }
      return true;
  }
}

MySvc {
   ...
   void doMigrate(... ) {
       validator.validate( myModel, new ValidForMigration() )
   }
}

Bean 验证基于声明性约束的原则,即约束声明一次 - 使用注释、XML 描述符或(在 Hibernate Validator 中)API - 然后根据需要在对象生命周期中的合适点。所以你所描述的在 Bean Validation 中是不可能直接实现的。

不过,Hibernate Validator constraint mapping API 可能仍然对您有所帮助。您将使用 API 声明要在迁移期间应用的约束,并使用这些约束映射设置验证器。