Spring 验证器:无法自动装配。找不到 'Validator' 类型的 bean

Spring Validator: Could not autowire. No beans of 'Validator' type found

我不知道我是否需要更多 code/details,但如果需要,我准备提供更多信息 :)

我得到:Could not autowire. No beans of 'Validator' type found。这里有类似的问题,但没有关于 Validator。我试图通过构造函数自动装配它,但它仍然是一样的。我使用 Intellij Ultime 版。 spring-boot-starter-xxx-xxx 的最新版本是 1.4。1.RELEASE 目前。

@Configuration
public class RestConfig extends RepositoryRestConfigurerAdapter {

    @Autowired
    private Validator validator;

    @Override
    public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
        validatingListener.addValidator("beforeCreate", validator);
        validatingListener.addValidator("beforeSave", validator);
    }
}

编辑:

我将我的代码更改为此并且它有效。谢谢解答..

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


@Override
public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
    validatingListener.addValidator("beforeCreate", validator());
    validatingListener.addValidator("beforeSave", validator());
}

顺便说一下,我只是想知道否决这个问题的人是否可以解释为什么 he/she 这样做?

Spring 库仅包含 Validator 的接口。您需要向实际实现验证框架的项目添加依赖项 JSR-303 like Hibernate Validator.

正如@rorschach 所说Spring 库有一个接口。您需要一个实现来使用验证器。现在它可能是第 3 方实现或定制的用户定义实现。 这是 LINK,它显示了 Hibernate 验证器和自定义验证器的示例。

您可以添加 @Qualifier 注释并按如下字段注入,而不是像上面那样更改代码:

@Autowired
@Qualifier("defaultValidator")
private Validator validator;