Preskoči na sadržaj
nazad na projekte

// projekat ·

Cloud Resource Inventory

Napravio sam Spring Boot MVC aplikaciju za cloud resurse, vlasništvo, kataloge i planirane promene. Stack: Java 21, Thymeleaf, Spring MVC.

Java 21 / Spring Boot / Spring MVC / Thymeleaf / Bean Validation / JUnit 5

Uloga: Univerzitetski projekat · IT355 · Godina: 2026 · Status: isporučeno

ukratko: Serverski renderovan inventar cloud resursa i planiranih promena. Spring MVC i Thymeleaf vode web tok. Application-scoped skladište drži prvi projektni zadatak usmeren na domenska pravila, validaciju i testiranje bez dodavanja baze.

Problem

Podaci o resursima završe razbacani po konzolama provajdera, tabelama i beleškama tima. Ime i provajder nisu dovoljni za svakodnevni rad. Tim mora da zna ko je vlasnik resursa, gde radi, koji servis zavisi od njega i da li je planirana promena. Slobodna tekstualna polja otežavaju da te veze ostanu dosledne.

Ograničenja

  • Zadatak je odredio obim. Trajno čuvanje u bazi, autentifikacija i REST API nisu bili deo PZ1, pa težište leži na domenskim pravilima, validaciji i testovima.
  • Veze moraju da drže. Timovi, okruženja, tipovi resursa, cloud nalozi, upravljani servisi i tagovi su posebni katalozi. Resurs ih referencira po ID-ju i nijedan ne sme da nestane dok nešto još pokazuje na njega.
  • Zahtevi za promenu imaju fiksnu putanju: nacrt, pregled, pa odobrenje ili odbijanje.

Odluke

  • Spring MVC kontroleri vezuju forme i pripremaju model za prikaz. Poslovna pravila ostaju u servisnom sloju.
  • Thymeleaf renderuje na serveru, pa nema posebnog frontend build-a ni stanja na klijentu.
  • InventoryStore drži podatke u application scope-u uz ConcurrentHashMap kolekcije i AtomicLong identifikatore.
  • Servisi blokiraju brisanje kataloškog zapisa koji još referencira resurs, upravljani servis ili zahtev za promenu.
  • Greške Bean Validation-a prikazuju se pored polja koje ih je izazvalo umesto sirovog odgovora servera.

Ishod

Finalni skup ima 162 testa kroz skladište, servise, validaciju, kontrolere i renderovani HTML. Pokriva i regresije koje je otkrilo testiranje u browser-u: neispravne URL-ove za izmenu, sirove 400 stranice i prelivanje tabela na uskim ekranima. Cena memorijskog skladišta je namerna i vidljiva. Restart aplikacije vraća sve izmene na demonstracioni skup podataka.