У меня есть объект ценности, который содержит String
. Эта строка подвержена некоторым ограничениям (длина, допустимые символы и т. Д.).Как использовать аннотации валидатора Java от конструктора?
Я хотел бы использовать API проверки Java или Spring для проверки моего объекта. Я хотел бы подтвердить свой объект домена во время создания (в конструкторе).
Пример кода, который понимает, что (проверяет this
с помощью проверки API):
void validate() {
LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
Set<ConstraintViolation<Msisdn>> violations = localValidatorFactoryBean.getValidator().validate(this);
if (!violations.isEmpty()) {
throw new ConstraintViolationException(violations);
}
}
Я не знаю, как получить экземпляр javax.validation.Validator
из конструктора.
В Spring-управляемый код (услуга) Я мог бы просто @Autowire
экземпляр javax.validation.Validator
или org.springframework.validation.Validator
, и она работает.
Но как заставить его работать вне управляемого Spring кода (в конструкторе объекта ценности, который стоит сам по себе)?
Я знаю, что могу писать правила проверки с использованием ifs, но аннотации для проверки делают код намного проще.