Ein kleines, aber durchdachtes Beispielprojekt zur Demonstration moderner Softwarearchitektur-Prinzipien wie
- Clean Code
- Hexagonale Architektur
- Gute Testbarkeit
Dieses Projekt wurde von Michael Nahberger entwickelt, um folgendes zu demonstrieren:
- Saubere Architektur
- REST-APIs mit Quarkus effizient strukturiert,
- Solides Test-, Tracing und Logging-Setup
- Daten werden über Mappings zwischen Schichten weitergereicht,
Die Anwendung folgt der Hexagonalen Architektur mit klarer Trennung zwischen:
domain: Reine Geschäftslogik (Service-Schicht)web.restAdapter für RESTpersistence: Adapter für die Persistence
- Java 17
- Quarkus
- Maven
- JUnit 5
- AssertJ
- Mockito
- Postman (für Integrationstest-Szenarien)
Nach dem Bauen per Maven:
mvn clean install...kann die Anwendung mit folgendem Skript gestartet werden:
cd project-resources/bin | project-resources/bin/start-todolist.batAlternativ kannst man die JAR direkt starten:
java -jar target\todolist-runner.jarAlle REST-Endpunkte sind unter dem Pfad:
/api/v1/todos
verfügbar.
Ein Request-Header requestId (optional) kann übergeben werden. Falls leer, wird eine UUID generiert und ins Logging
und als Response Header übernommen.
Ein zusätzlicher Health-Endpoint für Quarkus ist erreichbar unter:
GET /q/health
Das Projekt enthält:
- Unit-Tests für alle Komponenten mit Mockito
- Integrationstests mit Quarkus-Test-Framework
- Szenario Tests in Postman
Die vollständige Postman-Collection findet man unter:
project-resources/postman/ToDoList API.postman_collection.jsonEin Beispiel-Szenario prüft:
- Anlegen eines Elements (
Create) - Prüfen von
GET ALL, dass 1 Element enthalten ist - Prüfen auf 409
Conflict, wenn Datum doppelt - Anlegen eines zweiten Elements
- Sortieren per
sortOrder=desc - Sortieren per
sortOrder=asc - Löschen des ersten Elements
- Nochmaliges Löschen – Erwartung: 404
- Finaler
GETmit Prüfung, dass nur noch 1 Element da ist - Löschen des Elements, was noch über ist
.
├── src
│ ├── main
│ │ ├── java/com/nahberger/todolist/...
│ │ └── resources/application.yaml
│ └── test
│ └── java/com/nahberger/todolist/...
├── project-resources
│ ├── bin/start-todolist.bat
│ └── postman/ToDoList.postman_collection.json
├── pom.xml
└── README.md
- Anwendung läuft auf Port 8080
application.yamlenthält zentrale Konfiguration- Sortierung erfolgt standardmäßig
asc(aufsteigend)
Michael Nahberger