我想将Hibernate Validator 4用作独立包(即没有 春/休眠)。我找到的代码如下(MyBean是一些 bean使用Hibernate Validator 4注释,myBean是它的实例),和 它确实返回了约束违规行为:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<MyBean>> result = validator.validate(myBean);
但是,我意识到Validator实例似乎不是每个类; 如果有人知道:Validator是否缓存了从处理myBean获得的约束 (这样当我再次为同一个类进行调用时,例如validator.validate(myBean2), 它不会再次搜索注释等)? 如果是这样,也许有人也知道这些约束在哪里得到缓存?
答案 0 :(得分:0)
正如您所说,Hibernate Validator缓存元数据。这是负责的班级 - https://github.com/hibernate/hibernate-validator/blob/master/engine/src/main/java/org/hibernate/validator/internal/metadata/BeanMetaDataManager.java
请注意,没有用于与缓存交互的API。在内存需求之后清除缓存。