2016-07-26 35 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