Spring Boot Orders
Ein vollständiger Java-21-Pfad von der fachlichen Invariante bis zu REST, PostgreSQL, Security, Migration, Architekturtest und Telemetrie. Nutze die Seite während Entwurf und Umsetzung: Arbeite an einem konkreten Codepfad und sichere Fachverhalten, Abhängigkeiten und Wartbarkeit mit passenden Tests.
Spring Boot 4.1
REST, Validation, Security, Actuator und OpenTelemetry in einer konsistenten Runtime.
PostgreSQL + Flyway
Produktives Schema, JPA-Mapping, Optimistic Locking und echte Containerintegration.
TDD + ArchUnit
Schnelle Domain-/Use-Case-Tests, Architekturregeln und explizites Docker-Profil.
Projektstruktur und Verantwortlichkeiten
Die Pakete spiegeln fachliche und technische Verantwortlichkeiten wider. Die Domäne bleibt frei von Spring, JPA und Servlet APIs.
spring-boot-orders/
├── src/main/java/.../domain
├── src/main/java/.../application
├── src/main/java/.../infrastructure
│ ├── persistence
│ ├── web
│ ├── security
│ └── observability
├── src/main/resources/db/migration
├── src/test/java
├── docs
├── scripts
├── compose.yaml
├── Dockerfile
└── pom.xml
| Bereich | Verantwortung | Wichtige Regel |
|---|---|---|
| domain | Aggregate, Value Objects, Ports | Keine Frameworkabhängigkeit |
| application | Use Cases und Transaktionsgrenze | Keine Adapterabhängigkeit |
| infrastructure/web | HTTP, Validation, Problem Details | Kein direkter JPA-Zugriff |
| infrastructure/persistence | JPA, Mapping, Spring Data | Implementiert Domain-Port |
REST API und Security
Lesen und Schreiben sind rollenbasiert getrennt. Health und Info bleiben für Plattformprobes erreichbar; weitere Actuator-Endpunkte sind geschützt.
POST /api/orders
Authorization: Basic writer writer
Content-Type: application/json
{
"customerId": "customer-4711",
"items": [{"productId":"java-workbench","quantity":2,"unitPrice":49.90,"currency":"EUR"}]
}
Datenbank und Migration
Flyway ist Schema-Owner. Hibernate verwendet
ddl-auto: validate. Die Migrationen erzeugen
Orders, Positionen, Constraints und Indizes.
Der PostgreSQL-Integrationstest verbindet Testcontainers über
@ServiceConnection mit der Spring-Boot-Anwendung.
Tests und Architekturregeln
- Domain- und Application-Tests ohne Spring.
- ArchUnit für Framework- und Paketgrenzen.
- Container-IT für PostgreSQL, Flyway, JPA und den vollständigen Use Case.
# Statische Prüfung ohne Maven und Docker
scripts/check-project.sh
# PostgreSQL starten und schnelle Tests ausführen
docker compose up -d postgres
./mvnw test
# Anwendung starten
./mvnw spring-boot:run
# Realer PostgreSQL-Integrationstest
./mvnw -Pcontainer-it verify
Observability und Betrieb
Correlation IDs erscheinen in Antwortheader und MDC. Fachliche Metriken zählen Orders und ihren Wert pro Währung. Traces können über den Spring-Boot-OpenTelemetry-Starter per OTLP exportiert werden.
Dokumentierte Entwurfsmuster
Repository, Adapter, Strategy, Application Service, DTO, Mapper, Exception Translator, Intercepting Filter und Composition Root sind im Code markiert und zusätzlich dokumentiert.