Spring-Boot如何正确注入javax.validation.Validator

WeMake软件

Validator尝试使用JSR-303(hibernate-validator)验证模型时,将注入spring应用程序bean时遇到问题

我的主要配置类是:

@EnableAutoConfiguration
@EnableWebMvc // <---
@EnableJpaRepositories("com.example")
@EntityScan("com.example")
public class MainConfiguration {

根据javadocs:

/**
 * Provide a custom {@link Validator} instead of the one created by default.
 * The default implementation, assuming JSR-303 is on the classpath, is:
 * {@link org.springframework.validation.beanvalidation.LocalValidatorFactoryBean}.
 * Leave the return value as {@code null} to keep the default.
 */
Validator getValidator();

Hibernate-validator在类路径上。我正在尝试将其注入存储库中:

@Repository
public class UserRepositoryImpl implements UserRepositoryCustom    {

    @Autowired
    private Validator validator;

抛出异常:

 No qualifying bean of type [javax.validation.Validator] found for dependency:

更新:

此问题的部分解决方法是在主配置类中对此进行定义:

  @Bean
    public Validator validator() {

        return new org.springframework.validation.beanvalidation.LocalValidatorFactoryBean();
    }

但是集成测试(需要org.springframework.test.context.web.WebAppConfiguration;注释并使用验证逻辑的集成测试)失败。

Geoand

您需要声明一个如下类型的bean LocalValidatorFactoryBean

<bean id="validator"
    class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>

以XML或

@Bean
public javax.validation.Validator localValidatorFactoryBean() {
   return new LocalValidatorFactoryBean();
}

在Java Config中。

编辑:

重要的是要了解,如果正在使用JPA并由Hibernate支持JPA,则Hibernate将尝试自动验证Bean和Spring框架。这可能会导致出现问题,javax.validation.ValidationException: HV000064: Unable to instantiate ConstraintValidator因为Hibernate不了解Spring Context,据我所知,甚至使用LocalValidatorFactoryBean,也无法做到这一点。这将导致验证程序运行两次。一个正确,一旦失败。

为了禁用默认的Hibernate ORM验证,需要为Spring设置以下属性:

spring.jpa.properties.javax.persistence.validation.mode=none

我更新了这个示例,因为这是我一遍又一遍地发现未注入Validator的示例,事实证明这是我面临的问题。

Spring文档的这一部分包含所有详细信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring Boot和Hibernate Validator版本

来自分类Dev

Spring Boot和Hibernate Validator版本

来自分类Dev

javax.validation.Validation多个实例化Vs重用单个Validator实例

来自分类Dev

hibernate-validator-5.1.3.Final中是否弃用了javax.validation.ConstraintPayload?

来自分类Dev

SpringMVC hibernate-validator java.lang.ClassNotFoundException:javax.validation.ValidatorFactory

来自分类Dev

hibernate-validator-5.1.3.Final中是否弃用了javax.validation.ConstraintPayload?

来自分类Dev

如何将Spring Validator和JSR 303混合使用

来自分类Dev

Spring Boot Validation使用JSON响应

来自分类Dev

如何正确地将Symfony \ Component \ Validator \ Validator注入服务?

来自分类Dev

Invalid target for Validator in spring error?

来自分类Dev

Spring Hibernate Validator逐步检查

来自分类Dev

在Spring 4 MVC中如何使用javax.validation和JSON请求?

来自分类Dev

在Spring 4 MVC中如何使用javax.validation和JSON请求?

来自分类Dev

如何将依赖项注入到Spring Modules Validation(Valang)自定义函数中?

来自分类Dev

结合使用JSR-303和Spring的Validator为Spring Boot端点实现自定义验证逻辑

来自分类Dev

如何在服务层中结合JSR-303和Spring Validator类?

来自分类Dev

org.hibernate.validator.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax / validation / ParameterNameProvider;

来自分类Dev

方法Illuminate \ Validation \ Validator :: validateVideo不存在

来自分类Dev

Slim 应用程序错误:Respect\Validation\Validator

来自分类Dev

方法 Illuminate\Validation\Validator::validateNullablerequired 不存在

来自分类Dev

调用未定义的方法 Cake\Validation\Validator::money()

来自分类Dev

使用javax.xml.validation.Validator针对XSD进行XML验证:无法解析来自第二个XSD的类型

来自分类Dev

Spring MVC项目中的Hibernate Validator

来自分类Dev

在Spring Validator中覆盖错误消息

来自分类Dev

Spring Validator 在 POST 上抛出 NotReadablePropertyException

来自分类Dev

如何使用JQuery Validation验证Spring form:form的form:password?

来自分类Dev

Spring Boot:如何注入存储库

来自分类Dev

应用依赖注入的正确 Spring Boot 方式是什么

来自分类Dev

在没有spring的情况下如何在Hibernate Validator中使用自定义错误消息?

Related 相关文章

  1. 1

    Spring Boot和Hibernate Validator版本

  2. 2

    Spring Boot和Hibernate Validator版本

  3. 3

    javax.validation.Validation多个实例化Vs重用单个Validator实例

  4. 4

    hibernate-validator-5.1.3.Final中是否弃用了javax.validation.ConstraintPayload?

  5. 5

    SpringMVC hibernate-validator java.lang.ClassNotFoundException:javax.validation.ValidatorFactory

  6. 6

    hibernate-validator-5.1.3.Final中是否弃用了javax.validation.ConstraintPayload?

  7. 7

    如何将Spring Validator和JSR 303混合使用

  8. 8

    Spring Boot Validation使用JSON响应

  9. 9

    如何正确地将Symfony \ Component \ Validator \ Validator注入服务?

  10. 10

    Invalid target for Validator in spring error?

  11. 11

    Spring Hibernate Validator逐步检查

  12. 12

    在Spring 4 MVC中如何使用javax.validation和JSON请求?

  13. 13

    在Spring 4 MVC中如何使用javax.validation和JSON请求?

  14. 14

    如何将依赖项注入到Spring Modules Validation(Valang)自定义函数中?

  15. 15

    结合使用JSR-303和Spring的Validator为Spring Boot端点实现自定义验证逻辑

  16. 16

    如何在服务层中结合JSR-303和Spring Validator类?

  17. 17

    org.hibernate.validator.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax / validation / ParameterNameProvider;

  18. 18

    方法Illuminate \ Validation \ Validator :: validateVideo不存在

  19. 19

    Slim 应用程序错误:Respect\Validation\Validator

  20. 20

    方法 Illuminate\Validation\Validator::validateNullablerequired 不存在

  21. 21

    调用未定义的方法 Cake\Validation\Validator::money()

  22. 22

    使用javax.xml.validation.Validator针对XSD进行XML验证:无法解析来自第二个XSD的类型

  23. 23

    Spring MVC项目中的Hibernate Validator

  24. 24

    在Spring Validator中覆盖错误消息

  25. 25

    Spring Validator 在 POST 上抛出 NotReadablePropertyException

  26. 26

    如何使用JQuery Validation验证Spring form:form的form:password?

  27. 27

    Spring Boot:如何注入存储库

  28. 28

    应用依赖注入的正确 Spring Boot 方式是什么

  29. 29

    在没有spring的情况下如何在Hibernate Validator中使用自定义错误消息?

热门标签

归档