Я использую Spring Boot 2.2.4.RELEASE , и у меня есть этот пользовательский валидатор с автоматической связью.
@Component
public class CompanyRequiredValidator implements ConstraintValidator<CompanyRequired, Company> {
@Autowired
private CompanyService companyService;
@Override
public void initialize(CompanyRequired constraintAnnotation) {
}
@Override
public boolean isValid(Company company, ConstraintValidatorContext context) {
return company != null && companyService.findByCompanyName(company.getCompanyName()) != null;
}
}
Моя конфигурация проверки.
@Configuration
public class ValidationConfig {
@Bean
public Validator validator() {
return new LocalValidatorFactoryBean();
}
@Bean
public MethodValidationPostProcessor methodValidationProstProcessor() {
MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();
methodValidationPostProcessor.setValidator(validator());
return methodValidationPostProcessor;
}
}
Независимо от того, что я пробовал, поле autowired возвращает null. Вещи, которые я пробовал:
https://medium.com/@ssscripting / получение-автоматических полей-для-работы-с-ограничением-проверки-в-пружине-boot-74424d5b0aaa
Autowired дает нулевое значение в валидаторе Custom Constraint
Настройка проверки пружины и гибернации