// projekt ·
Cloud Resource Inventory
Eine Spring-Boot-MVC-App, um Cloud-Ressourcen, Zuständigkeiten, Kataloge und geplante Änderungen zu verwalten. Stack: Java 21, Thymeleaf, Spring MVC.
Rolle: Uniprojekt · IT355 · Jahr: 2026 · Status: ausgeliefert
kurz: Ein serverseitig gerendertes Inventar für Cloud-Ressourcen und geplante Änderungen. Spring MVC und Thymeleaf übernehmen den Web-Ablauf. Ein Store im Application Scope hält die erste Aufgabe bei Domänenregeln, Validierung und Tests, ohne eine Datenbank hinzuzufügen.
Problem
Ressourcendaten verteilen sich auf Provider-Konsolen, Tabellen und Teamnotizen. Name und Provider reichen im Alltag nicht. Ein Team muss wissen, wem eine Ressource gehört, wo sie läuft, welcher Service von ihr abhängt und ob eine Änderung geplant ist. Freitextfelder machen es schwer, diese Beziehungen konsistent zu halten.
Rahmenbedingungen
- Die Aufgabe bestimmte den Umfang. Datenbankpersistenz, Authentifizierung und eine REST-API gehörten nicht zu PZ1, also liegt das Gewicht auf Domänenregeln, Validierung und Tests.
- Beziehungen müssen halten. Teams, Umgebungen, Ressourcentypen, Cloud-Konten, verwaltete Services und Tags sind eigene Kataloge. Eine Ressource verweist per ID auf sie, und keiner darf verschwinden, solange noch etwas auf ihn zeigt.
- Änderungsanträge folgen einem festen Weg: Entwurf, Prüfung, dann Genehmigung oder Ablehnung.
Entscheidungen
- Spring-MVC-Controller binden Formulare und bereiten das View-Model vor. Geschäftsregeln bleiben in der Service-Schicht.
- Thymeleaf rendert auf dem Server, also gibt es keinen eigenen Frontend-Build und keinen Client-State.
InventoryStorehält die Daten im Application Scope mitConcurrentHashMap-Collections undAtomicLong-IDs.- Services verhindern das Löschen eines Katalogeintrags, auf den noch eine Ressource, ein verwalteter Service oder ein Änderungsantrag verweist.
- Fehler aus Bean Validation erscheinen neben dem Feld, das sie ausgelöst hat, statt als rohe Serverantwort.
Ergebnis
Die finale Suite hat 162 Tests über Storage, Services, Validierung, Controller und gerendertes HTML. Sie deckt auch die Regressionen ab, die Browsertests gefunden haben: ungültige Bearbeitungs-URLs, rohe 400-Seiten und überlaufende Tabellen auf schmalen Bildschirmen. Der Preis des In-Memory-Stores ist gewollt und sichtbar. Ein Neustart setzt alle Änderungen auf den Demodatensatz zurück.