2017-02-03 1 views
2

Ich versuche, Spring-Boot (Spring-Boot-Starter-Web: 1.3.5.RELEASE und Spring-Boot-Starter-Validierung: 1.3.5.RELEASE) arbeiten ohne die Hibernate-Validator-Abhängigkeit. Dies sind die Optionen, die ich habe:Spring Boot-Anwendung ohne die Ruhezustand-Validierer-Abhängigkeit

  • Option 1: Verwenden Sie standardmäßig OptionalValidatorFactoryBean.

  • Option 2: Suchen Sie eine andere JSR 303-Implementierung - org.apache.bval: bval-jsr303 oder etwas anderes.

Ich habe versucht, die Option 1, und Dependency Injection ignoriert diese Einstellung und sieht für Hibernate-Validator und schlägt fehl:

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

Mit der Option 2, I das Glas auf Klasse-Pfad und Dependency Injection fallen gelassen hat Wählen Sie die Implementierung nicht aus.

Es wäre schön, einen Arbeits Validator Flow andere als hibernate- Validator oder zumindest eine Dummy-Validierung wie Option zu bieten hat 1.

+0

Aus Neugier, was ist Ihr Problem mit Hibernate Validator? –

+0

Es ist eine rechtliche Hürde von meinem Arbeitgeber, kein anderer technischer Grund – Mohan

Antwort

1

Sie benötigen einen Bohne vom Typ LocalValidatorFactoryBean statt OptionalValidatorFactoryBean zu erklären.

Sie können mehr über das auf dem spring doc finden.

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

Und schließlich sicherstellen, dass nur eine Implementierung JAR eines JSR-303/JSR-349-Provider wie Hibernate Validator oder Apache BVAL ist auf dem Classpath, nicht beides.

1

Wenn Siewählen Option1,

Option 1: Verwenden Sie die Standard OptionalValidatorFactoryBean.

Von JavaDocs von OptionalValidatorFactoryBean,

Dies ist die eigentliche Klasse von Spring MVC Konfiguration Namespace verwendet, im Fall der javax.validation API vorhanden ist, aber kein expliziter Validator konfiguriert wurde.

Stellen Sie sicher, dass javax.validation API in Ihrem Klassenpfad vorhanden ist.

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

Wenn SieOption2 wählen, Am Apache BVal statt Hibernate Validator

Option 2: Finden Sie eine andere JSR 303 Implementierung - org.apache.bval: bval -jsr303 oder irgendetwas anderes.

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

oder Verwenden von JavaConfig

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

    return result; 
} 
+0

getestet und funktioniert – aliopi

0

Hinzufügen von Maven Abhängigkeiten:

<!-- 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> 

In Aktion, Frühling Boot-Ausgang:

*************************** 
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 
Verwandte Themen