Posts

Keine Ahnung von MongoDB? Dann nimm Spring Data!

Bild
Spring Data vereinheitlicht für Euch den Zugriff auf die Daten. Es unterstützt klassische, relationale und NoSQL Datenbanken. Hier zeige ich wie man MongoDB nutzen kann, ohne es (im Detail) verstehen zu müssen. MongoDB (lokal) starten Zum Kennenlernen von Spring Data und zum Ausprobieren von MongoDB braucht man kein aufwändiges Setup. Wenn man Cloud-Dienste nutzen kann, kann man sich MongoDB als Service in Azure, AWS oder der Open Telekom Cloud bereitstellen lassen, siehe z.B. hier: https://open-telekom-cloud.com/de/produkte-services/document-database-service MongoDB selbst bietet mit MongoDB Atlas auch einen eigenen Cloud-Service an, den man kostenlos ausprobieren kann:  https://www.mongodb.com/try Ich habe mich für eine lokale Variante entschieden, in dem ich einen MongoDB Docker Container starte. Hier eine kurzer Überblick wie das geht: Docker für Windows installieren, siehe:  https://docs.docker.com/docker-for-windows/install/ Docker funktioniert mit Linux mindestens genau...

REST / JSON APIs in Java leicht gemacht mit Spring und Jackson

Bild
Mit Spring Annotationen kann man sehr leicht Java Methoden als REST-Services exponieren. Die Jackson-Bibliothek wandelt JSON Daten dann automatisch in Java Objekte um. Wie einfach das geht, zeige ich in diesem Post. Spring RestContoller Model View Controller Design Pattern Spring Web MVC ist von Anfang an Bestandteil des Spring Frameworks. MVC steht für Model View Controller und ist ein Design Pattern für Softwareentwicklung: View ist die Präsentation für den Benutzer. Also z.B. das html, welches im Browser angezeigt wird. Model ist das Datenmodell, welches in der View dargestellt wird und im Controller verarbeitet wird. Der Controller kümmert sich um die Programmsteuerung und stellt somit die Daten bereit. Model-View-Controller Aufrufbeziehungen Im Detail wird das MVC Pattern und weitere Entwurfsmuster für guten Code z.B. in diesem Buch erklärt:  Head First: Design Patterns RestController erstellen Ein typischer Controller einer REST API unterstützt also die verschiedenen http ...

AWS lambda Services mit Spring Boot erstellen

Bild
Amazon Web Services ermöglicht mit Lambda Services Code-Ausführung ohne (eigenen) Server - serverless. Hier wird gezeigt, wie man Lambda Code in Java mit Spring Boot erstellt bzw. wie man ein RestContoller-basiertes Hello World mit AWS Lambda und Spring Boot erstellt.  Spring Boot Lambda Projekt mit Maven Archetype generieren Die AWS Labs bieten ein Maven Archetype Template an, mit dem man sich einfach ein neues Spring Boot Projekt generieren kann. Wenn man Maven installiert und in seiner Shell eingerichtet hat, kann man einfach folgenden Befehl ( Achtung vorher Zeilenumbrüche entfernen ) ausführen: mvn archetype:generate -DgroupId=de.demo  -DartifactId=aws-demo -Dversion=0.0.1 -DarchetypeGroupId= com.amazonaws.serverless.archetypes   -DarchetypeArtifactId= aws-serverless-springboot2-archetype   -DarchetypeVersion= 1.5.1 Das neue Projekt wird im selben Verzeichnis erstellt, in dem auch der Befehl ausgeführt wurde. 💣Archetype Version 1.5.1 generiert einen B...

Automatisiertes JUnit-Testing von asynchronen Methoden

Falls Du in Deinen Unit-Test Klassen "Thread.sleep" verwendest, um z.B. die Ergebnisse asynchroner Methoden zu testen, dann zeige ich Dir im folgenden Artikel die clean code Variante. Was ist das Problem mit Thread.sleep in Unit-Tests? Unser Team entwickelt zur Zeit einen Import Service, der große Datenmengen einliest und verarbeitet. Der Import Prozess dauert relativ lange, daher ist eine asynchrone Verarbeitung des Imports eine nahe liegende Lösung, die vereinfacht so aussehen könnte: public void importDataAsync() throws Exception {   // Java 8 lambda expression for a thread.   Runnable asyncImport = () -> {     // Import data takes a long time.     // Writes state 'done' in database,      // when import finished successful.   };   // Java 8 solution to run threads asynchronously.   CompletableFuture.runAsync(asyncImport)n       .orTimeout(120, TimeUnit.SECONDS); } Wie könnte nun ein einfacher JUnit Test daz...