【发布时间】:2018-09-04 14:31:43
【问题描述】:
任何注入 CustomValidator 实现的 bean 始终为空。我使用的是 Spring Boot 2,应用程序是一个 REST API,我没有使用 MVC。
到目前为止,我已经尝试了我所读到的一切,但没有运气。
this topic here for example did not work for me
我应该另外验证吗?,我已经坚持了 2 天了。
这是我的配置类:
@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 {};
}
【问题讨论】:
标签: validation spring-boot bean-validation