DDD & Clean Architecture mit Spring Boot 4¶
Workshop S2090 - GFU Cyrus AG | 5 Tage
Praxisorientierter Workshop für erfahrene Java-Entwickler und Software-Architekten. Anhand einer durchgängigen Übungsdomäne - einem Immobilien-CRM für Makler - werden Domain-Driven Design und Clean Architecture Schritt für Schritt mit Spring Boot 4 umgesetzt.
Tagesübersicht¶
| Tag | Thema | Slides | Labs | Zeitplan |
|---|---|---|---|---|
| 1 | Grundlagen & Domänenverständnis | 01-intro, 02-spring-boot-basics, 03-ddd-einfuehrung, 04-event-storming | Lab 01 (Setup und Warmup), Lab 02 & Lab 02b (Event Storming) | Intro 45 Min → Spring Boot Recap 45 Min → DDD Einführung 90 Min → Event Storming 120 Min |
| 2 | Strategisches & Taktisches Design | 05-strategic-design, 06-building-blocks, 07-clean-architecture | Lab 03 (Strategic Design), Lab 04 (Building Blocks) | Strategic Design 90 Min → Building Blocks 120 Min → Clean Architecture 90 Min |
| 3 | Implementierung & Adapter | 08-paketstruktur, 09-use-cases-application-services, 10-rest-adapter | Lab 05 (Clean Architecture Refactoring), Lab 06 (Use Case), Lab 07 (REST Adapter) | Paketstruktur 60 Min → Use Cases 60 Min → REST Adapter 90 Min |
| 4 | Architektur-Governance & Integration | 11-archunit, 12-context-integration, 13-business-components-modulith, 14-querschnittsthemen | Lab 08 (ArchUnit), Lab 09 (Context Integration), Lab 10 (Modulith), Lab 11 (Querschnittsthemen) | ArchUnit 60 Min → Integration 60 Min → Modulith 90 Min → Querschnitt 60 Min |
| 5 | Testing, Vertiefung & Reflexion | 15-teststrategie | Lab 12 (Testing), Lab 13 (Freie Implementierung) | Teststrategie 90 Min → Freie Implementierung 120 Min → Reflexion 60 Min |
Voraussetzungen¶
| Werkzeug | Version | Hinweis |
|---|---|---|
| JDK | 21+ | Empfohlen für den gesamten Workshop; erforderlich, um Virtual Threads in Lab 01 praktisch auszuprobieren |
| Maven | 3.9+ | mvn -version zur Prüfung |
| IDE | - | IntelliJ IDEA empfohlen (Community oder Ultimate) |
| Git | 2.x | Zum Klonen des Repositories |
| Docker | optional | Für optionale Kafka-Übung in Lab 13 |
| Browser | - | Für H2-Console und draw.io |
Setup¶
# Repository klonen
git clone <repository-url>
cd workshop-ddd-clean-architecture
# Starter-Projekt bauen und starten
cd labs/lab-01-setup-und-warmup/initial-project
mvn clean verify
mvn spring-boot:run
# Health-Check
curl http://localhost:8080/actuator/health
# Erwartete Antwort enthält mindestens "status":"UP",
# z. B. {"groups":["liveness","readiness"],"status":"UP"}
Projektstruktur¶
workshop-ddd-clean-architecture/
├── slides/ # MARP Slide-Decks (Module 01-15)
│ ├── 01-intro/
│ ├── 02-spring-boot-basics/
│ ├── ...
│ └── template.html # Marp HTML-Template
├── labs/ # Hands-on Labs (01-13)
│ ├── lab-01-setup-und-warmup/ # Starter-Projekt + CRUD-Warmup
│ ├── lab-02-event-storming/
│ ├── ...
│ └── lab-13-freie-implementierung/
└── README.md # Diese Datei
Slides rendern (MARP)¶
Die Slide-Decks sind im MARP-Format geschrieben und können als HTML oder PDF gerendert werden.
# MARP CLI installieren (einmalig)
npm install -g @marp-team/marp-cli
# Einzelnes Modul als HTML rendern
marp --html slides/01-intro/slides.md
# Einzelnes Modul als PDF rendern
marp --html --pdf slides/01-intro/slides.md
# Alle Module rendern
for dir in slides/*/; do
if [ -f "$dir/slides.md" ]; then
marp --html --pdf "$dir/slides.md"
fi
done
Diagramme bearbeiten¶
Die .drawio-Dateien in den slides/*/images/-Verzeichnissen können mit folgenden
Tools geöffnet und bearbeitet werden:
- draw.io Desktop - Offline-Anwendung für alle Plattformen
- diagrams.net - Online-Editor im Browser
- VS Code Extension - "Draw.io Integration" von Henning Dieterichs
Zum Einbetten in die Slides werden die Diagramme als PNG exportiert und unter
demselben Namen mit .png-Endung abgelegt (z. B.
clean-architecture-ringe.drawio.png).
Übungsdomäne: Immobilien-CRM¶
Die durchgängige Übungsdomäne umfasst sechs Bounded Contexts:
| Bounded Context | Beschreibung |
|---|---|
| Objektverwaltung | Immobilien erfassen, bewerten, Stammdaten pflegen |
| Kontaktmanagement | Eigentümer, Interessenten und Kontaktdaten verwalten |
| Akquise / Auftrag | Maklerverträge anbahnen und abschließen |
| Vermarktung | Exposés erstellen, Inserate auf Portalen schalten |
| Vermittlungsprozess | Besichtigungen, Angebote, Notartermine - die Deal Pipeline |
| Aktivitäten / Kommunikation | Termine, Aufgaben, E-Mails und Telefonate protokollieren |
Technologie-Stack¶
- Java 21+ (Records, Sealed Classes, Virtual Threads)
- Spring Boot 4.0.x (Jakarta EE 11, Spring Framework 7, Virtual Threads)
- Spring Data JPA + H2 (In-Memory-Datenbank)
- Bean Validation (jakarta.validation)
- ArchUnit (Architektur-Tests)
- JUnit 5 + Mockito (Testframework)
- Maven (Build-Tool)
- Kein Lombok - explizite Konstruktoren und Java Records
Lizenz¶
Dieses Material ist für den internen Schulungsgebrauch bestimmt. © 2026 - GFU Cyrus AG - Workshop S2090