【问题标题】:SpringBoot application ignore xml configuration for HibernateValidatorSpringBoot 应用程序忽略 HibernateValidator 的 xml 配置
【发布时间】:2016-07-27 15:43:10
【问题描述】:

我的问题如下:

是否可以忽略 HibernateValidator 的 XML 配置,即在 SpringBoot 应用程序中排除validation.xml 解析?

我的应用程序中不需要validation.xml,但我看到当应用程序启动时,它会尝试解析这个文件。 我在 Hibernate Validator 文档 (https://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-xmlconfiguration.html) 中找到了这个:

甚至可以通过 Configuration.ignoreXmlConfiguration() 完全忽略 XML 配置。

我看到的是,在 LocalValidatorFactoryBean.afterPropertiesSet() 方法中,为验证器创建了配置。此 bean 有一个名为 postProcessConfiguration(Configuration configuration) 的方法,该方法在根据配置构建 validatorFactory 之前调用。 这似乎是调用 ignoreXmlConfiguration() 方法的理想位置,文档建议这样做。

我尝试扩展这个LocalValidatorFactoryBean,这样我就可以在上面提到的方法中实现这个调用。然后我尝试通过java配置类加载这个bean。

不幸的是,一些引导机制已经使用了 Spring 提供的 bean,在它找到我的之前,两个 bean 同时运行。我看到消息说我创建的 bean 忽略了 XML 配置,但是,这个解决方案没有帮助,因为 Spring 提供的 bean 没有被我的替换。

我还尝试查找是否有任何我可以使用的应用程序属性,或者排除一些自动配置,但没有运气。

有什么想法吗? :)

更新: 我尝试排除 HibernateJPAAutoConfiguration,但没有帮助。

【问题讨论】:

    标签: java spring-boot hibernate-validator


    【解决方案1】:

    如果您不需要休眠验证器,则从 pom.xml 文件中删除与休眠验证器相关的所有依赖项。 您还可以尝试在 Application 类上添加 @EnableAutoConfiguration(excludes=) 注释以排除默认验证配置。

    like @SpringBootApplication(exclude = {HibernateJpaAutoConfiguration.class,DataSourceAutoConfiguration.class} })

    【讨论】:

    • 感谢您的回答。我确实需要 hibernate 验证器,因此不能选择删除依赖项。我尝试排除 HibernateJPAAutoconfiguration,不幸的是它没有帮助。
    • 如果你的应用程序类路径中有validation.xml,只需删除它,然后spring boot会在找到jar后自动将HibernateValidator配置为你的应用程序的默认验证器。
    • 我没有validation.xml,但是在构建validatorFactory时,org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory()会尝试解析XML 配置。这是我试图排除的行为,因为它是不必要的。在解析期间,它检查的第一件事是 ignoreXmlConfiguration 标志是真还是假。我会很好,如果我能以某种方式将此标志设置为 false,那将解决我的问题。
    • 我的意思是我想将 ignoreXmlConfiguration 标志设置为 true。
    • 这个标志的默认值已经是假的。检查这个类 org.hibernate.validator.internal.engine.ConfigurationImpl private boolean ignoreXmlConfiguration = false;也 parseValidationXml() 首先检查validation.xml文件是否存在,然后只有它会解析文件,正如你所说你没有那个xml文件,那么我猜验证器配置的默认行为很好
    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2020-06-11
    • 2012-08-04
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多