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
1
2
3
4
5
6
7
8
9
10
11
12
@Componentpublic class UniqueEmailValidator implements ConstraintValidator<UniqueEmail, String> {private final UserRepository userRepository;public UniqueEmailValidator(UserRepository userRepository) {this.userRepository = userRepository;}@Overridepublic 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.