0 Tage Serie
java / expert
Snippet

Service-Aware Benutzerdefinierte Constraint-Validatoren

Durch die Kennzeichnung eines ConstraintValidator als Spring @Component übernimmt das Framework automatisch die Dependency Injection. Dies ermöglicht komplexe Business-Logik-Validierungen, wie die Prüfung auf Eindeutigkeit in der Datenbank, direkt über JSR-303-Annotationen.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
@Component
public class UniqueEmailValidator implements ConstraintValidator<UniqueEmail, String> {
private final UserRepository userRepository;
public UniqueEmailValidator(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public boolean isValid(String email, ConstraintValidatorContext context) {
if (email == null) return true;
return !userRepository.existsByEmail(email);
}
}
spring
Erklärung
1
implements ConstraintValidator<UniqueEmail, String>
Bindet den Validator an eine spezifische benutzerdefinierte Annotation und den Zieldatentyp.
2
private final UserRepository userRepository;
Injizierte Spring-Bean, die für Suchanfragen während der Validierung verwendet wird.
3
return !userRepository.existsByEmail(email);
Die eigentliche Validierungslogik, die den Status gegen einen persistenten Datenspeicher prüft.