Не стесняйтесь делиться своими знаниями. Вот как я решил эту задачу.
Я создал компонент Spring, и он имеет статическое поле (GroupService
, которое инициализируется в конструкторе).
@Component // Spring component.
class ServiceHolderComponent {
private static GroupService GROUP_SERVICE;
@Autowired4
public ServiceHolderComponent(final GroupService groupService) {
GROUP_SERVICE = Validate.notNull(groupService); //apache lib
}
public static GroupService getGroupService() {
return GROUP_SERVICE;
}
}
А теперь валидатор с конструктором по умолчанию.
public class EntityDynamicValidator implements ConstraintValidator<SomeConstraint, Entity> {
private GroupService groupService;
public UserDynamicEnumValidator() {
this(ServiceHolderComponent.getGroupService());
}
public UserDynamicEnumValidator(final GroupService groupService) {
this.groupService = groupService;
}
@Override
public boolean isValid(final Entity entity, final ConstraintValidatorContext context) {
Something something = groupService.findByValue(entity.getValue());
// Validate all this stuff
}
}