【发布时间】:2020-04-03 14:31:44
【问题描述】:
我在使用 spring boot 2.1.5 构建的应用程序中有以下自定义休眠验证器。
public class MyValidator implements ConstraintValidator<MyValidAnnotation, DTO> {
@Autowired
private MyBean myBean;
@Override
public boolean isValid(DTO dto, ConstraintValidatorContext constraintValidatorContext) {
// logic
}
}
我需要在 2 种情况下使用这个验证器,在 isValid 方法中我需要跳过一些检查。我找到了使用以下代码在 ConstraintValidatorContext 上设置参数的解决方案:
HibernateValidatorFactory hibernateValidatorFactory = Validation.buildDefaultValidatorFactory()
.unwrap( HibernateValidatorFactory.class );
Validator validator = hibernateValidatorFactory.usingContext()
.constraintValidatorPayload(RepairEstimateDTO.class.getSimpleName())
.getValidator();
validator.validate(dto);
问题是 MyBean 没有注入,在 isValid 方法中 myBean 为 null。
如何在不重复代码的情况下在 2 个上下文中重用此验证器?
谢谢
【问题讨论】:
标签: java hibernate spring-boot hibernate-validator