Karta ćwiczenia laboratoryjnego

Java Spring Boot Spring Data JPA H2 Database Thymeleaf Maven

📋 Informacje podstawowe

Pole Wartość
Przedmiot Spring
Forma zajęć laboratorium
Ćwiczenie Lab. 6 / Spring Configuration Properties
Data 27.06.2026
Nazwisko i imię studenta ......................................................
Rok/semestr Rok 3, semestr 6 [studia niestacjonarne]
Ocena ocena cząstkowa
Uwagi do ćwiczenia brak

📝 Opis zadania laboratoryjnego

W projekcie (folder src_Spring_Lab6) dostarczonym razem z tą karą zaimplementowano przykład reprezentujący Spring Configuration Properties. W projekcie znajdują się 3 pliki: ConfigDemoApplication, MyAppProperties, application.properties. Umieść poniżej każdy z plików oraz kolorem czerwonym opisz działanie i istotne elementy kodu programu.

📦 Wymagania

Kod każdego z trzech plików projektu wraz z opisem należy umieścić w sekcji KOD PROGRAMU - REALIZACJA tego pliku. Opis działania i istotnych elementów kodu należy wpisać kolorem czerwonym (np. <span style="color:red">...</span>). Plik .md należy dodać do projektu.

Całość należy spakować do formatu .zip:

WSZIB_R3IN_NazwiskoImie_Spring_Lab6.zip

W miejscu NazwiskoImie należy wpisać swoje nazwisko i imię (uwaga na kolejność). Wynik pracy w formie archiwum zip powinien zawierać:

Archiwum WSZIB_R3IN_NazwiskoImie_Spring_Lab6.zip należy uzupełnić o swoje dane w nazwie i przesłać poprzez:

Upload

🎯 Ogólny opis zadania

Celem zadania jest zapoznanie się z mechanizmem Spring Configuration Properties — sposobem mapowania właściwości z pliku application.properties na pola obiektu Javy oraz ich walidacji.

W dostarczonym projekcie (folder src_Spring_Lab6) aplikacja Spring Boot wczytuje grupę właściwości z prefiksem myapp do klasy MyAppProperties oznaczonej adnotacją @ConfigurationProperties. Wartości obejmują pola proste (name, version, enabled), obiekt zagnieżdżony (server z polami host i port) oraz listę (admins). Po uruchomieniu aplikacja w komponencie CommandLineRunner wypisuje wczytaną konfigurację na konsolę.

Klasa MyAppProperties wykorzystuje walidację (Jakarta Validation / Hibernate Validator) — m.in. @NotBlank, @Pattern, @NotEmpty, @Email, @Min, @Max oraz @Valid dla obiektu zagnieżdżonego. Adnotacja @Validated na klasie aktywuje sprawdzanie poprawności właściwości przy starcie aplikacji.

Zadaniem studenta jest przeanalizowanie i opisanie działania trzech plików projektu:

✅ Wymagania funkcjonalne

Kod wymagania Wymaganie Poziom
WF-01 Aplikacja wczytuje właściwości z prefiksem myapp z pliku application.properties do klasy MyAppProperties. wysoki
WF-02 Klasa właściwości mapuje pola proste (name, version, enabled), obiekt zagnieżdżony server (host, port) oraz listę admins. wysoki
WF-03 Właściwości są walidowane (@NotBlank, @Pattern, @NotEmpty, @Email, @Min, @Max, @Valid) dzięki adnotacji @Validated. wysoki
WF-04 Komponent CommandLineRunner wypisuje wczytaną konfigurację na konsolę po starcie aplikacji. wysoki
WF-05 Każdy z trzech plików został opisany kolorem czerwonym (działanie i istotne elementy kodu). wysoki

🔧 Wymagania niefunkcjonalne

Kod wymagania Wymaganie Poziom
WNF-01 Aplikacja wykorzystuje Spring Boot z zależnościami spring-boot-starter, jakarta.validation-api oraz hibernate-validator. wysoki
WNF-02 Kod jest czytelny, poprawnie sformatowany i podzielony na pliki (klasa startowa, klasa właściwości, plik konfiguracyjny). średni
WNF-03 Struktura projektu jest zgodna z konwencją Spring Boot (Maven). średni
WNF-04 Archiwum .zip zawiera folder Program z projektem oraz uzupełniony ten plik .md. wysoki

🧩 Diagram klas

classDiagram class ConfigDemoApplication { +main(String[] args) void +run(MyAppProperties props) CommandLineRunner } class MyAppProperties { -String name -String version -boolean enabled -Server server -List~String~ admins +getName() String +getVersion() String +isEnabled() boolean +getServer() Server +getAdmins() List~String~ } class Server { -String host -int port +getHost() String +getPort() int } MyAppProperties *-- Server : zawiera ConfigDemoApplication --> MyAppProperties : @Bean / wstrzykiwanie

Legenda diagramu:

Symbol Opis
──> (linia ciągła) Zależność — wstrzykiwanie MyAppProperties do metody @Bean
*-- (kompozycja) Klasa zagnieżdżona Server jest częścią MyAppProperties

💻 KOD PROGRAMU - REALIZACJA

JAVA (ConfigDemoApplication.java)

// Wklej tutaj kod Java

Opis działania i istotnych elementów kodu:

JAVA (MyAppProperties.java)

// Wklej tutaj kod Java

Opis działania i istotnych elementów kodu:

PROPERTIES (application.properties)

# Wklej tutaj zawartość pliku application.properties

Opis działania i istotnych elementów pliku:

🏆 Ocena [wypełnia prowadzący]

Ocena kodu

Kryterium Opis Punkty (max) Punkty uzyskane
K-01 Wszystkie trzy pliki zostały umieszczone w karcie. 2
K-02 Poprawny opis klasy ConfigDemoApplication (start aplikacji, CommandLineRunner). 2
K-03 Poprawny opis klasy MyAppProperties (@ConfigurationProperties, walidacja, obiekt zagnieżdżony, lista). 3
K-04 Poprawny opis pliku application.properties (mapowanie prefiksu myapp, lista, obiekt zagnieżdżony). 2
K-05 Opisy wykonane kolorem czerwonym, czytelne i poprawne merytorycznie. 1
Suma 10

Ocena końcowa

Pole Wartość
Ocena (2–5)
Uwagi prowadzącego
Data wystawienia oceny
Podpis prowadzącego