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;
我不知道我是否需要更多 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;