0 Tage Serie
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
@RestControllerAdvice
public 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.