Репозиторий является нулевым в классе, который реализует ConstraintValidator - PullRequest
0 голосов
/ 03 января 2019

У меня есть пользовательский класс проверки имени пользователя, который реализует 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 является нулевым только в этом классе, тогда как в сервисах эта проблема не существует

...