Integrationstests mit Spring Data MongoDB und Testcontainers

Bis vor kurzem haben wir auf Arbeit eine Embedded MongoDB zum Testen unserer Spring Boot Anwendungen verwendet. Mittlerweile benötigen wir jedoch ein paar Features, die seit MongoDB 4 hinzugekommen sind, und die Embedded MongoDB unterstützt bis jetzt nur MongoDB 3. Daran wird sich vermutlich auch in Zukunft nichts ändern (Is this project dead? #314), sodass ich mich auf die Suche nach einer Alternative gemacht habe.

Caching für WebJars in Spring Boot konfigurieren

Für einfache Spring Boot basierte Webanwendungen greife ich häufig auf WebJars zurück. WebJars bieten die Möglichkeit, diverse JavaScript und CSS Bibliotheken wie z.B. jQuery oder Bootstrap als Abhängigkeit in Form einer JAR-Datei einzubinden. Spring Boot unterstützt WebJars von Haus aus, allerdings sollte das Caching für die WebJar Ressourcen konfiguriert werden, um möglichst kurze Ladezeiten für den Client zu erreichen.

Docker Images mit Google Jib bauen

Bislang habe ich Docker Images für meine Spring Boot Anwendungen immer per Dockerfile gebaut. Dafür wurde die mit dem spring-boot-maven-plugin erzeugte JAR Datei einfach in ein Docker Image kopiert. Dieses Vorgehen hat jedoch einige Nachteile, die nur mit viel Aufwand gelöst werden können. Stattdessen empfehle ich seit einiger Zeit die Verwendung von Google Jib, das eure Java Anwendungen effizient und sicher als Docker Image verpackt.

Mehrere Datenbanken mit Spring Boot und Spring JDBC anbinden

Ohne manuelle Konfiguration kann nur eine Datenbank mit Spring Boot genutzt werden. Soll eine Anwendung mehrere Datenbanken anbinden, ist hingegen etwas Handarbeit nötig. Dieser Artikel zeigt die dazu notwendige Konfiguration unter Verwendung von Spring Boot 2, Spring JDBC und zwei MySQL Datenbanken.

Build und Git Informationen mit Spring Boot erzeugen und auslesen

Mit Spring Boot können bequem Build und Git Informationen erzeugt und ausgelesen werden. Damit die Informationen erzeugt werden, muss die Konfiguration zunächst entsprechend angepasst werden.

Datenbankabfragen mit Spring aus dem Java Quellcode auslagern

Wer Spring JDBC verwendet, kennt das Problem: längere Datenbankabfragen können nur umständlich im Java Quellcode untergebracht werden. Meist werden solche Abfragen über einen StringBuilder, einen StringJoiner oder die seit Java 8 zur Verfügung stehende String join Methode zusammengesetzt. Man kann sich jedoch das Properties System von Spring zu nutze machen, um Datenbankabfragen aus dem Quellcode auszulagern.

Spring Boot Anwendung als Systemdienst einrichten

Mit Spring Boot ist es möglich, JAR-Dateien für Linux basierte Betriebssysteme zu erzeugen, die wie normale Binärdateien gestartet und beim Einsatz von SysVinit oder systemd als Systemdienst registriert werden können.