Posts

Es werden Posts vom November, 2022 angezeigt.

Spring 6: ProblemDetail die Standardisierung von Fehlern in REST APIs

Der RFC 7807 standardisiert das Format von Fehlern in HTTP Responses. Spring 6 liefert die Umsetzung mit der Klasse ProblemDetail ! In der täglichen Arbeit nutzen wir viele Services über ihre REST APIs. Ein klassisches Problem ist, dass verschiedene APIs die gleichen Datenmodelle auf unterschiedliche Weise modellieren. Dann sind wir als Nutzer dieser APIs genötigt Mapper zwischen den API-Modellen zu schreiben. Dieses Problem gibt es auch bei Fehlern, welche beim Nutzen einer API auftreten können. Viele APIs verwenden hier unterschiedliche Formate. Der RFC 7807 standardisiert das Fehler-Format, siehe: https://www.rfc-editor.org/rfc/rfc7807.html   Ein sinnvolles Feature von Spring 6 ist die Umsetzung des RFC 7807 durch die Klasse ProblemDetail . Im Folgenden zeige ich euch wie einfach ihr das in eurer API nutzen könnt. Dann bekommt ihr standardisierte Fehlerbeschreibungen wie diese: {      "type" :  "about:blank" ,      "title" :  "Item not found."

Spring Native Microservices mit GraalVM - Blitzstart in der Cloud

Bild
Der perfekte Microservice skaliert in der Cloud optimal, so dass sprunghaft steigende Last fehlerfrei verarbeitet wird. Mit Spring Native und der GraalVM können wir Cloud native Images bauen. Container von nativen Images starten trotz geringerem Ressourcenverbrauch blitzschnell. Dazu zeige ich euch hier eine Demo. AOT Kompilierung mit GraalVM GraalVM ist eine Java VM (Virtuelle Maschine) und ein JDK (Java Development Kit) in den Java LTS Versionen 11 oder 17. Oracle entwickelt GraalVM und bietet es als freie Community Edition oder lizenzpflichtige Enterprise Edition an. Seit Version 19 im Mai 2019 gilt GraalVM als produktionsreif. Die große Besonderheit von GraalVM ist die ahead-of-time (AOT) Kompilierung des Sourcecodes. Damit bauen wir in der Build-Phase (z.B. mit Maven) ein natives Image. Native Images enthalten alle benötigten Applikations Klassen, Dependencies, 3rd Party Bibliotheken und JDK Klassen. Das native Image ist eine alleinstehende, ausführbare Binärdatei, deren Vorteile