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.

Quellen: