2016-07-26 122 views
1

XML配置我的问题是:SpringBoot应用忽略HibernateValidator

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

我没有必要在我的应用程序中使用validation.xml,但是我发现应用程序启动时会尝试解析此文件。 我发现这个Hibernate验证文档(https://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-xmlconfiguration.html)中:

它经由Configuration.ignoreXmlConfiguration完全忽略该XML配置甚至可以()。

我看到的是,在LocalValidatorFactoryBean.afterPropertiesSet()方法,为验证创建的配置。这个bean有一个叫做的方法postProcessConfiguration(配置配置),它是在配置生成validatorFactory之前调用的。 它似乎是一个调用ignoreXmlConfiguration()方法的理想地方,文档提供了什么。

我试图扩展此LocalValidatorFactoryBean,以便我可以在上述方法中实现此调用。然后我试图通过java配置类加载这个bean。

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

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

任何想法? :)

更新: 我试过排除HibernateJPAAutoConfiguration,它没有帮助。

回答

1

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

像@SpringBootApplication(排除= {HibernateJpaAutoConfiguration.class,DataSourceAutoConfiguration.class}})

+0

感谢您的回答。我确实需要hibernate验证器,所以删除依赖项不是一个选项。我试过排除HibernateJPAAutoconfiguration,不幸的是它没有帮助。 – slevinn

+0

如果你在你的应用程序类路径中有validation.xml文件,只要删除它,然后spring应用程序一旦找到jar,就会自动配置HibernateValidator作为应用程序的默认验证器。 –

+0

我没有validation.xml,但是当生成validatorFactory时,** org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory()**会尝试解析XML配置。这是我尝试排除的行为,因为这是不必要的。 解析期间,它检查的第一件事是ignoreXmlConfiguration标志是true还是false。我会很好,如果不知怎的,我可以设置这个标志为假,这将解决我的问题。 – slevinn