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.

Bean Validation mit Spring nutzen

Der ModelAttributeMethodProcessor von Spring MVC erlaubt standardmäßig die Überprüfung von Methodenparametern in @Controller-Klassen per Bean Validation. Um diese Funktionalität auch in anderen Spring Beans (die z.B. mit @Service oder @Component annotiert sind) verwenden zu können, sind nur wenige Handgriffe nötig.

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.

Datenbankgestützte Authentifizierung mit Spring Security

Spring basierte Webanwendungen werden für gewöhnlich mit Spring Security abgesichert. Dieser Artikel zeigt, wie eine datenbankgestützte Authentifizierung mit diesem Framwork umgesetzt werden kann.

Plugin Schnittstelle mit dem Java ServiceLoader umsetzen

Viele moderne Anwendungen verfügen heutzutage über Plugin Schnittstellen. Solche Schnittstellen ermöglichen es, die jeweilige Anwendungen zu erweitern, ohne die Hauptanwendungen selbst anzupassen. Java bringt standardmäßig den ServiceLoader mit, um solche Plugin Schnittstellen umzusetzen.

25. August 2017 Java

[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!

Diese oder eine sehr ähnliche Warnung wird ausgegeben, wenn in einem Maven Projekt nicht explizit die Zeichenkodierung des Quellcodes angegeben wird. In diesem Fall wird ein Betriebssystem-spezifischer Standard verwendet, was in einigen Fällen zu Problemen führen kann. Deshalb sollte die Zeichenkodierung des Projektes immer angegeben werden.

14. August 2017 Java Maven

Apache Derby Datenbank in Java Anwendung einbinden

Apache Derby ist eine in Java implementierte SQL Datenbank, die entweder eigenständig gestartet oder direkt in eine Java Anwendung eingebunden werden kann. Dieser Artikel zeigt, wie die Datenbank in eine Java Anwendung integriert und angesprochen werden kann.

04. August 2017 Apache Derby Java

Shutdown Hooks beim Beenden einer Java Anwendung ausführen

Das ungeplante Beenden einer Anwendung, z.B. durch drücken von STRG + C auf der Konsole oder Abbruchsignale, kann Probleme nach sich ziehen, wenn Ressourcen nicht mehr freigegeben oder inkonsistente Zustände hinterlassen werden. Glücklicherweise kann auf das ungeplante Beenden der JVM per Shutdown Hook reagiert werden.

02. August 2017 Java

Basis URL einer Webanwendung per HttpServletRequest bestimmen

Für bestimmte Anwendungsfälle, zum Beispiel dem Versenden einer Aktivierungsmail an neu registrierte Benutzer, wird die Basis URL einer Webanwendung benötigt. Diese kann entweder manuell hinterlegt oder zur Laufzeit aus einem HttpServletRequest ausgelesen werden. Für den letzteren Fall kann die folgende Methode verwendet werden.

02. August 2017 Java