[JAVA] Abrufen von Fehlerinformationen mithilfe von DefaultErrorAttributes und ErrorAttributeOptions in Spring Boot 2.3

Überblick

Fehlerinformationen, die mit DefaultErrorAttributes abgerufen werden können

[DefaultErrorAttributes \ (Spring Boot 2 \ .3 \ .0 \ .RELEASE API )](https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/api/org/springframework/boot Die Attribute der Fehlerinformationen, die erfasst werden können, sind in /web/servlet/error/DefaultErrorAttributes.html) beschrieben.

--Timelink: Zeitpunkt, zu dem der Fehler extrahiert wurde --status: Statuscode --error: Grund für den Fehler --exception: Name der Root-Ausnahmeklasse --message: Ausnahmemeldung --errors: Mehrere ObjectErrors (Bindungsfehler) in BindingResult festgelegt --trace: Exception Stack Trace --path: URL-Pfad, wenn eine Ausnahme auftritt

Beispielcode für Spring Boot 2.2

import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
import org.springframework.web.context.request.ServletWebRequest;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

public class ErrorAttributesGetter22 {

  /**
   *Fehlerinformationen extrahieren.
   *
   * @param req Anforderungsinformationen
   * @Fehlerinformationen zurückgeben
   */
  public static Map<String, Object> getErrorAttributes(HttpServletRequest req) {
    //Detaillierte Fehlerinformationen erhalten Sie mit der DefaultErrorAttributes-Klasse
    ServletWebRequest swr = new ServletWebRequest(req);
    DefaultErrorAttributes dea = new DefaultErrorAttributes(true);
    return dea.getErrorAttributes(swr, true);
  }
}

Beispielcode für Spring Boot 2.3

Mithilfe der ErrorAttributeOptions-Klasse können Sie jetzt auswählen, ob einige Attribute erfasst werden sollen (ob sie als Fehlerinformationen belassen werden sollen).

import org.springframework.boot.web.error.ErrorAttributeOptions;
import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
import org.springframework.web.context.request.ServletWebRequest;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

public class ErrorAttributesGetter23 {

  /**
   *Fehlerinformationen extrahieren.
   *
   * @param req Anforderungsinformationen
   * @Fehlerinformationen zurückgeben
   */
  public static Map<String, Object> getErrorAttributes(HttpServletRequest req) {
    //Detaillierte Fehlerinformationen erhalten Sie mit der DefaultErrorAttributes-Klasse
    ServletWebRequest swr = new ServletWebRequest(req);
    DefaultErrorAttributes dea = new DefaultErrorAttributes();
    ErrorAttributeOptions eao = ErrorAttributeOptions.of(
      ErrorAttributeOptions.Include.BINDING_ERRORS,
      ErrorAttributeOptions.Include.EXCEPTION,
      ErrorAttributeOptions.Include.MESSAGE,
      ErrorAttributeOptions.Include.STACK_TRACE);
    return dea.getErrorAttributes(swr, eao);
  }
}

Überprüfen Sie den Quellcode der DefaultErrorAttributes-Klasse für Spring Boot 2.3

Der Quellcode des Teils, der aus den Fehlerinformationen für das Element gelöscht wurde, das nicht das Erfassungsziel ist.

spring-boot/DefaultErrorAttributes.java at v2.3.1.RELEASE · spring-projects/spring-boot · GitHub

@Override
public Map<String, Object> getErrorAttributes(ServerRequest request, ErrorAttributeOptions options) {
	Map<String, Object> errorAttributes = getErrorAttributes(request, options.isIncluded(Include.STACK_TRACE));
	if (this.includeException != null) {
		options = options.including(Include.EXCEPTION);
	}
	if (!options.isIncluded(Include.EXCEPTION)) {
		errorAttributes.remove("exception");
	}
	if (!options.isIncluded(Include.STACK_TRACE)) {
		errorAttributes.remove("trace");
	}
	if (!options.isIncluded(Include.MESSAGE) && errorAttributes.get("message") != null) {
		errorAttributes.put("message", "");
	}
	if (!options.isIncluded(Include.BINDING_ERRORS)) {
		errorAttributes.remove("errors");
	}
	return errorAttributes;
}

Referenzmaterial

Recommended Posts

Abrufen von Fehlerinformationen mithilfe von DefaultErrorAttributes und ErrorAttributeOptions in Spring Boot 2.3
[Java] Abrufen von Daten aus der Datenbank mithilfe des Singleton-Dienstes in Spring (Boot)
Hochladen und Herunterladen von Dateien mit Ajax mit Spring Boot (ohne JQuery)
Unbekannter Fehler in Zeile 1 von pom.xml bei Verwendung von Spring Boot in Eclipse
Spring Boot Whitelabel-Fehlerseite und JSON-Antwort
Anforderungs- und Antwortprotokolle mit Spring Boot ausgeben
Wenn Sie irgendwo einen Fehler melden möchten, wenn Sie graphql-spring-boot mit Spring Boot verwenden
Holen Sie sich Cookies im Frühling
Testen von JPA-Entitäten und -Repositorys mit Spring Boot @DataJpaTest
[Spring Boot] Benutzerinformationen mit Rest API abrufen (Anfänger)
Testen Sie die Klasse mit Feldinjektion im Spring-Boot-Test, ohne den Spring-Container zu verwenden
Holen Sie sich Standortinformationen mit Rails und sortieren Sie in aufsteigender Reihenfolge
CSRF-Gegenmaßnahmenrichtlinie und Implementierungsbeispiel in einer REST-Anwendung unter Verwendung von "Spring Boot" + "EXT JS"
Legen Sie den Kontextparameter in Spring Boot fest
Federvalidierung und Fehlercode
Holen Sie sich EXIF-Informationen in Java
Beginnen Sie mit Spring Boot
Spring Boot 2 Multiprojekt mit Gradle
Informationen in einer Instanz abrufen und Zahlen berechnen Standardversion
Aufrufen und Verwenden der API in Java (Spring Boot)
Fehler in der Spring-Datenbankverbindung
Wichtige Änderungen in Spring Boot 1.5
NoHttpResponseException in Spring Boot + WireMock
Versuchen Sie es mit Spring Boot Security
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
8 Dinge, die mit Spring Boot und JPA in die DB eingefügt werden müssen
So steuern Sie Transaktionen in Spring Boot ohne Verwendung von @Transactional
Einfache Entwicklung von Webanwendungen mit STS und Spring Boot. In 10 Minuten.
[Java] Abrufen von Datumsinformationen 10 Tage später in Millisekunden in der Datumsklasse
Rufen Sie in Spring Boot eine Proxy-Instanz der Komponente selbst ab
Wird in Spring Boot mithilfe einer Bean-Definitionsdatei mit dem Namen application.xml angepasst
Vergleiche Hallo Welt! Mit Spring Boot mit Java, Kotlin und Groovy
Stellen Sie sich die Spring Boot-App mit dem Jib-Maven-Plugin vor und starten Sie sie mit Docker
Frühlingsstiefel Hallo Welt in Eclipse
Spring Boot + PostgreSQL-Fehlerbehebungsmethode
Spring Boot Tutorial Verwenden der Spring Security-Authentifizierung
[Ethereum] Blockinformationen mit web3j abrufen
Schreiben Sie den Testcode mit Spring Boot
Erhalten Sie Validierungsergebnisse mit Spring Boot
Speichern Sie Sitzungsinformationen mit Spring Session in der Datenbank
Implementieren Sie die REST-API mit Spring Boot
Spring-Profilfunktion und Spring Boot application.properties
Was ist @Autowired im Spring Boot?
Implementieren Sie die Spring Boot-Anwendung in Gradle
Verwendung von Thymeleaf mit Spring Boot
Erstellen Sie mit Intellij ein Spring Boot-Projekt und beenden Sie es sofort nach dem Start
Spring Boot + MyBatis Ich erhalte diesen Fehler, wenn ich die Datenbank nicht einstelle
Ich habe die Verwendung der Schlangenhülle für den Variablennamen in Spring Boot nicht mehr verstanden
Automatische Bereitstellung von in Java entwickelten Webanwendungen mit Jenkins [Spring Boot App Edition]
Verwenden von Hystrix und Sentinel im Codebeispiel
Starten Sie mit IntelliJ ein (altes) Spring Boot-Projekt
Erstellen Sie mit Gradle ein Spring Boot + Docker-Image
Statische Dateizugriffspriorität beim Spring Boot
Existiert mit der Spezifikation in Spring Data JPA
Memorandum zum Herunterladen lokaler Dateien mit Spring Boot
HTTPS mit Spring Boot und Let's Encrypt
Erstellen Sie mit IntelliJ ein Java Spring Boot-Projekt
Lösen Sie die Thymeleaf-Syntaxprüfung in Spring Boot
Fehler bei der Implementierung bei der Implementierung der Spring-Validierung
[Trainieren! ] Zeigen Sie Hello World mit Spring Boot an