【问题标题】:Spring Validator: Could not autowire. No beans of 'Validator' type foundSpring Validator:无法自动装配。找不到“验证器”类型的 bean
【发布时间】:2016-09-24 14:19:15
【问题描述】:

我不知道我是否需要以及更多关于此的代码/详细信息,但如果需要,我准备提供更多信息:)

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

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

【问题讨论】:

  • 请提供您的配置文件
  • 嗨@JekinKalariya。很抱歉问,但你所说的配置是什么意思?我不使用 xml 配置,只使用 java 注释。
  • 好的,然后给你的验证器类和组件扫描的地方还有你的 beans.xml
  • @JekinKalariya 我在应用程序类中使用@SpringBootApplication 注释。我的验证器类就是您在我的问题中看到的所有内容。我认为这个问题与代码无关。它看起来像一个错误。我认为 Intellij 社区版不会出现这个问题。
  • @Bean public Validator validator() { return new LocalValidatorFactoryBean(); } 这正是我所需要的 :) 谢谢!

标签: java spring bean-validation spring-validator


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • compile "org.hibernate:hibernate-validator" - 在 gradle 的情况下这是否足够?
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 2019-06-14
      • 2020-01-31
      • 2019-09-16
      • 2016-09-30
      • 1970-01-01
      • 2016-09-27
      • 2015-05-07
      • 2022-11-08
      相关资源
      最近更新 更多