Einfaches Trace-ID Logging in REST Anwendungen

Das Logging von Web-Anwendungen, bzw. allen Server-Anwendungen ist mit seinen eigenen kleinen Tücken versehen. Die üblichen, mehr oder wenig hilfreichen Log Anweisungen, die sich im Source Code tummeln, sorgen für einen stetigen Strom von Log-Ausgaben. Solange sich die Ausgabe auf einen einzelnen Request bezieht, ist häufig noch sehr gut nachvollziehbar, was gerade auf dem Server passiert. Bei sehr vielen Anfragen an den Server leidet aber die Übersicht.

Wie Roboter tröten (2)

Metallisch anmutender Mammut Umriß

Im letzten Beitrag wurde ein erster Bot für Mastodon erstellt. Der Bot postet mittlerweile drei mal täglich um 8:00, 12:00 und 16:00 Uhr ein englischsprachiges Zitat auf Mastodon. Obwohl die Anwendung schon hinreichend arbeitet, fehlen noch Kleinigkeiten zum dauerhaften Einsatz.

Wie Roboter tröten

Metallisch anmutender Mammut Umriß

Im ersten Mastodon Beitrag wurden einige Grundlagen zur API erläutert. In diesem Beitrag soll ein eigner Bot erstellt werden. Die Bots auf Mastodon sind spezielle Accounts die autmatisierte Aufgaben erfüllen. Dies können regelmäßige Info-Tröts sein, die Analyse des Nutzerverhaltens, gelegentliche Umfragen oder, oder oder. Ein Mastodon Bot wird wie ein normaler Account erstellt, jedoch wird ein zusätzliches Häkchen gesetzt.

Fun with Flags – Feature Flags

Bei der schnellen Entwicklung von neuen Featuren gerät man irgendwann an den Punkt, dass die Synchronisation der Features Branches mit dem Main-Branch immer schwieriger und die Abhängigkeit zwischen den Feature Branches immer komplexer wird. Eine mögliche Hilfe in dieser Situation sind Feature Flags.

JSR 354 – Ihre Nummer fürs Geld

Java Bibliotheken

Nicht jeder JSR schafft es direkt ins JDK und dann vergisst man schon einmal, das seit 2015 eine Referenzimplementierung für Java Money existiert. Wer mit Geldbeträgen und Währungen nicht mehr direkt auf BigDecimal arbeiten möchte, sollte sich deshalb unbedingt Moneta anschauen.

REST Endpunkte mit Filtern (2)

Im vorherigen Beitrag wurde ein einfache Lösung für REST Endpunkte mit Filtern vorgestellt. Ein Kritikpunkt an der vorgestellten Implementierung ist die starke Kopplung zwischen dem JPA Repository und dem Filterable. In diesem Bitrag werden wir diesen Ansatz mit dem EntityManager entkoppeln.

REST Endpunkte mit Filtern

Neben dem Sortieren und Paginieren ist das Filtern eine recht häufige Aktion auf REST Endpunkten. Im Gegensatz zu den beiden erstgenannten gibt es aber für das Filtern keine adäquate Lösung im Spring Boot Framework. Mit geringen Aufwand kann dies aber elegant mit den Spring Boot Hilfsmitteln ergänzt werden.

Suchen mit Spring Data JPA Specification

Durch den Einsatz von Spring Data JPA in eigenen Projekten können Datenbankaktionen sehr einfach mit Hilfe von Repository Interfaces umgesetzt werden. Alle Zugriffe auf die Entitäten erfolgen über Methoden dieser Schnittstellen. Mit diesen vordefinierten Zugriffsmethoden und der Möglichkeit eigene Zugriffsmethoden zu deklarieren ist ein Großteil der üblichen Anwendungen abgedeckt. Einziger Nachteil dieser Methoden ist ihre feste Definition. Ein alternativer Ansatz, um die Suchen dynamisch zu generieren, verwendet die Schnittstelle Specification.

Eigene Spring Boot Kafka Anwendungen

Im ersten Kafka Beitrag ging es um die generelle Arbeitsweise und Architektur des Systems. In diesem Beitrag um die Integration in eigene Spring Boot Anwendung. Dieser Beitrag wird recht kurz, weil die Integration tatsächlich sehr einfach ist.

Datumsvalidierung mit Zeitfenstern

Der Bean Validation 2.0 (JSR380) Framework nimmt dem Java Entwickler viel Arbeit ab. Die Prüfung auf valide Daten reduziert sich mittlerweile auf einige Annotationen an den zu prüfenden Konstrukten. Auch im Bereich der Datumsprüfungen gibt es reichlich Unterstützung. Aber manchmal kann es ein wenig mehr sein.