2017-02-03 119 views
2

我試圖讓spring-boot(spring-boot-starter-web:1.3.5.RELEASE和spring-boot-starter-validation:1.3.5.RELEASE)工作沒有hibernate-validator依賴。這些是我擁有的選項:沒有hibernate-validator依賴項的Spring Boot應用程序

  • 選項1:使用默認的OptionalValidatorFactoryBean。

  • 選項2:查找一些其他JSR 303實現 - org.apache.bval:bval-jsr303或其他任何東西。

我試過選項1,和依賴注入忽略此設置,並查找休眠,驗證和失敗:

@Bean 
public org.springframework.validation.Validator validator() { 
    return new OptionalValidatorFactoryBean(); 
} 

對於選項2,我放棄了類路徑和依賴注入確實在瓶子不選擇實施。

它會是不錯的比冬眠驗證器,或者至少提供類似的選擇1.

+0

出於好奇,Hibernate Validator有什麼問題? –

+0

這是我的僱主的一些法律障礙,沒有其他技術原因 – Mohan

回答

1

您需要聲明類型LocalValidatorFactoryBean代替OptionalValidatorFactoryBean的豆虛擬驗證等工作驗證流程。

你可以在spring doc找到更多關於此。

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

最後確定只有一個JSR-303/JSR-349提供者如Hibernate驗證或Apache BVAL的實現JAR存在於類路徑,而不是兩個。

1

如果選擇選項1

方法1:使用默認OptionalValidatorFactoryBean。

OptionalValidatorFactoryBean的JavaDoc,

這是javax.validation API存在,但已配置沒有明確 驗證的情況下使用Spring的MVC配置命名空間, 實際的類。

確保javax.validation API存在於您的類路徑中。

============================================== =======

如果選擇1選項,使用Apache BVal代替Hibernate驗證

選項2:尋找一些其他的JSR 303的實現 - org.apache.bval:BVAL -jsr303或其他任何東西。

<!-- Validator bean --> 
<bean id="validator" 
    class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> 
    <property name="providerClass" 
     value="org.apache.bval.jsr303.ApacheValidationProvider" /> 
</bean> 

或使用JavaConfig

@Bean 
public LocalValidatorFactoryBean localValidatorFactoryBean() throws ClassNotFoundException { 
    LocalValidatorFactoryBean validatorBean = new LocalValidatorFactoryBean(); 
    validatorBean.setProviderClass(org.apache.bval.jsr303.ApacheValidationProvider.class)); 

    return result; 
} 
+0

測試和工作 – aliopi

0

添加Maven依賴:

<!-- Bean Validation --> 
<dependency> 
    <groupId>javax.validation</groupId> 
    <artifactId>validation-api</artifactId> 
    <version>1.1.0.Final</version> 
</dependency> 

<dependency> 
    <groupId>org.apache.bval</groupId> 
    <artifactId>bval-jsr</artifactId> 
    <version>1.1.2</version> 
</dependency> 

在行動,春季啓動輸出:

*************************** 
APPLICATION FAILED TO START 
*************************** 

Description: 

Binding to target MyProperties(prop1=null, ...) failed: 

    Property: prop1 
    Value: null 
    Reason: must not be null 

Action: 

Update your application's configuration 
相關問題