Autowiring works everywhere in application except inside this custom validation annotation class where it is null when called from inside isValid() method.
javax.validation:validation-api: 2.0.1.Final
org.hibernate:hibernate-validator: 5.0.1.Final
spring: 5.1.4.RELEASE
@Component
public class ValidatorUniqueUsername implements ConstraintValidator<UniqueUsername, String> {
@Autowired
AccountService jpaAccountService;
@Override
public void initialize(UniqueUsername constraintAnnotation) { }
@Override
public boolean isValid(String username, ConstraintValidatorContext context) {
return username != null && jpaAccountService.findByUsername(username) == null;
}
}
@Entity
...
public class Account extends BaseEntity<Long> implements Serializable{
@NotEmpty
@UniqueUsername
private String username;
}
@Configuration
public class AppConfig implements AsyncConfigurer {
@Bean
public Validator validatorFactory() {
return new LocalValidatorFactoryBean();
}
@Bean
public static LocalValidatorFactoryBean validatorFactory() {
return new LocalValidatorFactoryBean();
}