0

我想使用 Hibernate Validator 4 作为一个独立的包(即没有 Spring/Hibernate)。我找到的代码如下(MyBean 是一些带有 Hibernate Validator 4 注释的 bean,myBean 是它的实例),它确实返回了约束违规:

    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();   
    Set<ConstraintViolation<MyBean>> result = validator.validate(myBean);

但是,我意识到 Validator 实例似乎不是每个类的;如果有人知道:Validator 是否缓存了它从处理 myBean 中获得的约束(这样当我再次调用同一个类时,例如 validator.validate(myBean2),它就不会再次搜索注释等)?如果是这样,也许有人也知道这些约束究竟被缓存在哪里?

4

1 回答 1

0

正如您所说,Hibernate Validator 缓存了元数据。这是负责的类 - https://github.com/hibernate/hibernate-validator/blob/master/engine/src/main/java/org/hibernate/validator/internal/metadata/BeanMetaDataManager.java

请注意,没有与缓存交互的 API。内存需求后清除缓存。

于 2013-05-30T08:10:45.630 回答