我有实现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;
}
}
这里的问题是ValidationUtil
调用类时,UserRepository始终为null:
@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;
}
}
豆类:
@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
仅在此类中为null,而在服务中却不存在此问题