У меня есть пользовательский класс проверки имени пользователя, который реализует ConstraintValidator
:
@Component
public class UniqueUsernameConstraint implements ConstraintValidator<UniqueUsername, String> {
private final UserRepository userRepository;
@Autowired
public UniqueUsernameConstraint(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public void initialize(UniqueUsername constraintAnnotation) {
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
System.out.println(this.userRepository);
System.out.println(value);
return false;
}
}
Проблема здесь в том, что UserRepository всегда равен нулю, когда класс вызывается ValidationUtil
:
@Component
public final class ValidationUtil {
private Validator validator;
public ValidationUtil() {
this.validator = Validation.buildDefaultValidatorFactory().getValidator();
}
public <E> boolean isValid(E entity) {
return this.validator.validate(entity).size() == 0;
}
}
Beans:
@Configuration
public class BeansConfiguration {
@Bean
public ModelMapper getModelMapper(){
return new ModelMapper();
}
@Bean
public ValidationUtil getValidationUtil(){
return new ValidationUtil();
}
@Bean
public BCryptPasswordEncoder getBCryptPasswordEncoder(){
return new BCryptPasswordEncoder();
}
@Bean
public SpringSecurityDialect springSecurityDialect(){
return new SpringSecurityDialect();
}
}
Идеи, почему UserRepository
является нулевым только в этом классе, тогда как в сервисах эта проблема не существует