java / expert
Snippet
Funktionale Fehlerübersetzung mit dem Spring ProblemDetail-Framework
Spring 6 hat native RFC 7807 `ProblemDetail`-Unterstützung für standardisierte HTTP-Fehlerantworten eingeführt. Die Verwendung von `@RestControllerAdvice` zusammen mit dynamischer Metadaten-Injektion ermöglicht eine zentrale Ausnahmeübersetzung und konsistente Fehlerverträge über alle REST-Endpunkte.
snippet.java
java
1
2
3
4
5
6
7
8
9
10
@RestControllerAdvicepublic class GlobalProblemDetailsAdvice {@ExceptionHandler(DomainValidationException.class)public ProblemDetail handleDomainValidation(DomainValidationException ex) {ProblemDetail problem = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, ex.getMessage());problem.setTitle("Domain Validation Failed");problem.setProperty("invalidFields", ex.getViolations());return problem;}}
spring
Erklärung
1
@RestControllerAdvice
Deklariert eine Komponente zur globalen Ausnahmeschleusung über alle Spring REST-Controller.
2
@ExceptionHandler(DomainValidationException.class)
Reicht den Steuerfluss bei bestimmten Domänen-Validierungsfehlern an diese Methode weiter.
3
ProblemDetail problem = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, ex.getMessage());
Erstellt einen RFC 7807-konformen Fehlercontainer mit HTTP 400-Status und Detailmeldung.
4
problem.setProperty("invalidFields", ex.getViolations());
Fügt der Antwort-Payload dynamisch detaillierte Domänen-Metadaten hinzu.