Spis treści | Spring w Akcji
- Tworzenie klasy kontrolera
Tworzenie klasy kontrolera
Kontrolery są głównymi graczami w Spring MVC. Ich głównym zadaniem jest obsługa żądań HTTP i albo przekazanie żądania do widoku w celu wyrenderowania HTML (wyświetlanie w przeglądarce), albo zapisanie danych bezpośrednio do ciała odpowiedzi (RESTful). W tym rozdziale skupimy się na kontrolerach, które wykorzystują widoki do tworzenia treści dla przeglądarek internetowych. Kiedy przejdziemy do rozdziału 6, przyjrzymy się pisaniu kontrolerów obsługujących żądania w ramach REST API.
Do aplikacji Taco Cloud potrzebny jest prosty kontroler, który będzie wykonywał następujące czynności:
- Obsługua żądania HTTP GET
- Zbuduje listę składników
- Przekaże żądanie i dane składników do szablonu widoku, który zostanie wyrenderowany jako HTML i wysłane do żądającej przeglądarki internetowej
Poniższa klasa DesignTacoController odpowiada na te wymagania.

Pierwszą rzeczą, na którą należy zwrócić uwagę w DesignTacoController, jest zestaw adnotacji zastosowanych na poziomie klasy. Pierwsza z nich, @Slf4j, jest adnotacją dostarczoną przez Lombok, która podczas runtime automatycznie wygeneruje w klasie logger SLF4J (Simple Logging Facade for Java, https://www .slf4j.org/). Ta skromna adnotacja ma taki sam efekt, jak gdybyś jawnie dodał następujące linie wewnątrz klasy:
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(DesignTacoController.class);
Z tego Loggera zrobisz użytek nieco później.
Następną adnotacją zastosowaną do DesignTacoController jest @Controller. Ta służy do identyfikacji tej klasy jako kontrolera i oznaczenia jej jako kandydata do skanowania komponentów, tak aby Spring odkrył ją i automatycznie utworzył instancję DesignTacoController jako bean w kontekście aplikacji Spring.
DesignTacoController jest również opatrzony adnotacją @RequestMapping. Adnotacja @Request- Mapping, gdy jest stosowana na poziomie klasy, określa rodzaj żądań, które ten kontroler obsługuje. W tym przypadku określa ona, że DesignTacoController będzie obsługiwał żądania, których ścieżka zaczyna się od /design.
Specyfikacja @RequestMapping na poziomie klasy jest udoskonalona przez adnotację @GetMapping, która zdobi metodę showDesignForm(). @GetMapping, w połączeniu z @RequestMapping na poziomie klasy, określa, że gdy żądanie HTTP GET zostanie odebrane dla /design, showDesignForm() zostanie wywołane, aby obsłużyć żądanie.
Pomocne linki