Bean Validation mit Spring nutzen
Der ModelAttributeMethodProcessor von Spring MVC erlaubt standardmäßig die Überprüfung von Methodenparametern in @Controller-Klassen per Bean Validation. Um diese Funktionalität auch in anderen Spring Beans (die z.B. mit @Service oder @Component annotiert sind) verwenden zu können, sind nur wenige Handgriffe nötig.
Die Unterstützung für Bean Validation wird durch die Konfiguration einer Bean vom Typ MethodValidationPostProcessor aktiviert:
package beanvalidation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
@Configuration
class ApplicationConfig {
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
Damit die Bean Validierung auch greift, muss eine Klasse, bei der die Validierung verwendet werden soll, mit @Validated annotiert werden:
package beanvalidation;
import javax.validation.constraints.NotBlank;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@Service
@Validated
class HellWorldService {
public String hello(@NotBlank final String username) {
return "Hello " + username;
}
}
Und schon kann in der Klasse auf den gesamten Funktionsumfang der Bean Validation zugegriffen werden.