Любой компонент, добавленный в реализацию CustomValidator, всегда имеет значение null. Я использую Spring Boot 2, приложение представляет собой REST API, я не использую MVC.
Я перепробовал все, что читал об этом, но пока безуспешно.
эта тема, например, у меня не работает
Должен ли я подтвердить в противном случае? Я застрял с этим уже 2 дня.
Это мой класс Config:
@Configuration
public class Beans {
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:idiomas/idioma");
messageSource.setUseCodeAsDefaultMessage(true);
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocaleResolver localeResolver() {
AcceptHeaderLocaleResolver resolver = new AcceptHeaderLocaleResolver();
resolver.setDefaultLocale(new Locale("es"));
return resolver;
}
@Bean
public LocalValidatorFactoryBean getValidator() {
LocalValidatorFactoryBean validatorFactoryBean = new LocalValidatorFactoryBean();
validatorFactoryBean.setValidationMessageSource(messageSource());
return validatorFactoryBean;
}
@Bean
public CommonsRequestLoggingFilter logFilter() {
CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
filter.setIncludeQueryString(true);
filter.setIncludePayload(true);
filter.setMaxPayloadLength(10000);
filter.setIncludeHeaders(true);
filter.setAfterMessagePrefix("REQUEST: ");
return filter;
}
}
Мой CustomValidator выглядит так:
public class AlmacenValidator implements ConstraintValidator {
@Autowired
private AlmacenService servicio;
@Autowired
private ApplicationContext contexto;
@Override
public void initialize(AlmacenValido constraintAnnotation) {
}
@Override
public boolean isValid(Almacen item, ConstraintValidatorContext context) {
//Database calls
}
JPA Сущность:
@Entity
@AlmacenValido
@Table(name = "almacenes")
public class Almacen {
//Entity fields
}
Аннотация:
@Documented
@Retention(RUNTIME)
@Target({ TYPE, FIELD, ANNOTATION_TYPE, PARAMETER })
@Constraint(validatedBy = AlmacenValidator.class)
public @interface AlmacenValido {
String message() default "{validacion.almacen}";
Class[] groups() default {};
Class[] payload() default {};
}