| 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 |
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.
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ć:
Program z projektem Spring Boot (zawartość folderu src_Spring_Lab6),.md.Archiwum WSZIB_R3IN_NazwiskoImie_Spring_Lab6.zip należy uzupełnić o swoje dane w nazwie i przesłać poprzez:
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:
ConfigDemoApplication.java — klasa startowa z CommandLineRunner,MyAppProperties.java — klasa właściwości z walidacją,application.properties — plik z wartościami konfiguracji.| 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 |
| 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 |
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 |
// Wklej tutaj kod Java
Opis działania i istotnych elementów kodu:
// Wklej tutaj kod Java
Opis działania i istotnych elementów kodu:
# Wklej tutaj zawartość pliku application.properties
Opis działania i istotnych elementów pliku:
| 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 |
| Pole | Wartość |
|---|---|
| Ocena (2–5) | |
| Uwagi prowadzącego | |
| Data wystawienia oceny | |
| Podpis prowadzącego |