Spring依赖注入在ConstraintValidator中不起作用

时间:2018-08-22 18:15:19

标签: java spring dependency-injection bean-validation

我正在尝试通过@Autowired将我的服务用于自定义ContextValidator批注。我在关于SOF的旧问题中寻求帮助,但是很不幸,所以我创建了一个新的。我的目标是在其上方带有注释@MyId的有效bean的属性。

这是我的代码:

@Documented
@Constraint(validatedBy = { MyIdValidator.class })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
public @interface MyIdSpring {

    String message() default "Invalid ID!";

    Class<?>[] groups() default { };

    Class<? extends Payload>[] payload() default { };
}

Validator类:

@Configurable(autowire = Autowire.BY_TYPE, dependencyCheck = true)
public class MyIdValidator implements ConstraintValidator<MyId, TestID> {

    @Autowired
    private ITestService testService;

    @Override
    public void initialize(MyId constraintAnnotation) {
    }

    @Override
    public boolean isValid(TestID value, ConstraintValidatorContext context) {

        System.out.println(testService);

        return false;
    }
}

配置:

@Configuration
public class ValidatorConfig {

    @Bean
    public LocalValidatorFactoryBean validator() {
        LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
        return bean;
    }
}

服务:

@Service
public class TestService implements ITestService { .. }

ITestService始终为null。你能帮我解决吗?我正在使用Spring Boot 1.5。

1 个答案:

答案 0 :(得分:0)

使用 @Qualifier 注释向Spring介绍您的实现类。

@Autowired
@Qualifier("testService")
private ITestService testService;