Spring Validator:无法自动装配。没有“验证者”的豆子。找到的类型

时间:2016-09-24 14:19:15

标签: java spring bean-validation spring-validator

我不知道是否需要以及更多关于此的代码/详细信息,但我愿意在需要时提供更多信息:)

我得到: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());
}

顺便说一句,我只是想知道投票反对这个问题的人是否可以解释为什么他/她这样做?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您可以添加@Qualifier批注并通过以下字段进行注入,而不是像上面那样更改代码:

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