Spring oferuje zestaw specjalnych adnotacji, zwanych stereotypami, które przypisują określone role klasom w
kontekście architektury aplikacji. Te adnotacje sterują zachowaniem Springa w odniesieniu do tych klas, definiując
ich przeznaczenie i zakres odpowiedzialności. Klasy oznaczone tymi adnotacjami są zazwyczaj specjalizowane do
wykonywania określonych zadań w ramach aplikacji, co pozwala na bardziej uporządkowaną i modularną strukturę
projektu.
Lista stereotypów
- Adnotacja @Component
Podstawowym stereotyp, który stanowi fundament dla innych adnotacji stereotypowych. Adnotacja
jest używana do oznaczania klas jako komponentów zarządzanych przez Spring, co umożliwia ich
automatyczne wykrywanie i zarządzanie przez kontener Springa.
Ta adnotacja jest szczególnie
przydatna, gdy tworzymy klasy narzędziowe lub pomocnicze, które mają być częścią mechanizmu
wstrzykiwania zależności Springa. Dzięki niej, Spring może odpowiednio zarządzać cyklem życia
tych komponentów oraz integracją z pozostałą częścią aplikacji.
Przykład prostego komponentu Springowego, który będzie pełnił rolę konwertera danych:
- Adnotacja @Controller
Adnotacja informuje Springa, że klasa jest komponentem
odpowiedzialnym za obsługę żądań HTTP. Po otrzymaniu żądania HTTP, Spring MVC wybiera metodę w
tej klasie, której mapowanie (@RequestMapping lub jej specyficzne warianty
jak @GetMapping, @PostMapping itp.) odpowiada ścieżce określonej w żądaniu.
Szczegółowy mechanizm dopasowywania
ścieżek i metodyczny wybór odpowiedniej metody kontrolera są omówione w rozdziale dotyczącym
mapowania żądań HTTP w Spring MVC —
Spring MVC: Mapowanie requestów HTTP
Metoda kontrolera może zwracać różne typy danych, w tym nazwę widoku, obiekt ResponseEntity, a
także może być typu void co jest szczególnie użyteczne w przypadku odpowiedzi z treścią
generowaną dynamicznie. Wynik działania metody kontrolera jest następnie używany do
wygenerowania odpowiedzi HTTP, która jest zwracana do klienta.
W tym należy wspomnieć o adnotacji, która co prawda nie należy do pakietu stereotypów Springa, ale jest bardzo często używana w kontekście mapowań
rozszerzając możliwości adnotacji @Controller. Mowa tutaj o adnotacji @RestController.
Stosując tą adnotację odpowiedzi będą automatycznie konwertowane do formatu JSON, co w wielu przypadkach będzie istotne, np. gdy zewnętrzna usługa oczekuje od
nas danych właśnie w tym formacie:
Więcej o adnotacji @RestController piszemy podczas opisu
adnotacji @ResponseBody, w rozdziale
Spring MVC - Metody obsługi żądań
HTTP (Handler Methods)
- Adnotacja @Service
Adnotacja przeznaczona jest dla klas, których zadaniem jest przetwarzanie logiki biznesowej. Innymi słowy, używamy jej
po to by oznaczyć główne miejsce przetwarzania danych za pomocą konkretnych algorytmów: