Ślad: • 12_spring_pa

Zajęcia 14 i 15. - Framework Spring i wzorzec MVC

Writing /home/grochu/public_html/wiki/data/meta/zajecia/java_2026_1/12_spring_pa.meta failed
Unable to save metadata file. Hint: disk full; file permissions; safe_mode setting.
Action unknown: siteexport_addpage
Writing /home/grochu/public_html/wiki/data/meta/zajecia/java_2026_1/sidebar.meta failed

REVEAL theme=simple&disableLayout=0&transition=none&controls=1&show_progress_bar=1&build_all_lists=0&show_image_borders=0&horizontal_slide_level=2&enlarge_vertical_slide_headers=0&show_slide_details=1&open_in_new_window=1&size=1024×768

<html> <style type=„text/css”> p { text-align: left;} .reveal { font-size: 30px; } .reveal section { width: 96%; margin: 0 auto; } .reveal .slides { width: 60% !important; } .reveal ul, .reveal ol { margin-left: 1.5em; } .reveal pre code {

height: 100%;
max-height: 100%;
box-sizing: border-box; }

</style> </html>

Co to jest Spring? Spring to zaawansowana platforma do tworzenia aplikacji w Javie. Składa się z wielu modułów. Kluczowym elementem jest kontener IoC (Inversion of Control) udostępniający mechanizm wstrzykiwania zależności (Dependency Injection), co przyspiesza składanie aplikacji. Spring to „framework frameworków” i jeden z najpopularniejszych frameworków w Javie.

Oczywiste zalety Springa

  • Gotowe szablony wspierające wiele technologii (JDBC, Hibernate, JPA itd.)
  • Luźne powiązanie między komponentami
  • Łatwość testowania aplikacji
  • Lekkość - wybieramy tylko potrzebne komponenty
  • Szybkość prac developerskich
  • Wysoki poziom abstrakcji
  • Silne wsparcie społeczności i dostawców

181_1.jpg

Spring - moduły

  • Test - warstwa wspierająca testy (JUnit, TestNG)
  • Spring Core Container - podstawowe moduły:
    • Core i Beans - IoC oraz DI
    • Context - remoting, I18N, EJB, JMS
    • Expression Language - wsparcie dla setterów/getterów, wywołań metod, operatorów
  • AOP, Aspects i Instrumentation - zaawansowane techniki programowania aspektowego
  • Data Access/Integration - integracja z bazami danych
  • Web - wsparcie dla aplikacji webowych

Drobne wtrącenie - Spark

Istnieje też mikroframework Spark (nie mylić z Apache Spark), skierowany na prostotę i minimalizm - przydatny w aplikacjach o ograniczonych zasobach (np. Raspberry Pi). Dokumentacja: Spark Java

Dokumentacja Spring

Strona projektu: spring.io

Spring w IntelliJ IDEA: Spring support in IntelliJ IDEA

Automatyzacja budowania projektów

Do zarządzania zależnościami i budowaniem projektów najpopularniejsze są Maven i Gradle. Dla Springa wygodnym narzędziem jest Spring Initializr (https://start.spring.io) - generuje szablon projektu z konfiguracją.

Maven i Gradle - Dokumentacja Maven: maven.apache.org - Dokumentacja Gradle: gradle.org

Wzorzec architektoniczny MVC - M - Model: warstwa logiki aplikacji - V - View (Widok): warstwa interfejsu użytkownika, prezentująca dane z modelu - C - Controller: warstwa przyjmująca dane od użytkownika, aktualizująca model i odświeżająca widoki

Spring Web MVC (Spring MVC)

Kluczowe funkcjonalności Spring Web MVC:

  • DispatcherServlet - dyspozytor żądań, deleguje przetwarzanie do odpowiednich handlerów.
  • Request mapping - mapowanie żądań za pomocą adnotacji (@RequestMapping oraz skrótów:

@GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping).

Handler methods i parametry:

  • @RequestParam - parametry zapytania (?klucz=wartość)
  • @PathVariable - parametry ścieżki (…/parametr)
  • @RequestBody - mapowanie body żądania na obiekt metody
  • @RequestPart - obsługa multipart/form-data
  • @ResponseBody - konwersja zwracanego obiektu na body odpowiedzi

Obsługa wyjątków i Controller Advice

  • @ExceptionHandler - oznacza metodę obsługującą wyjątki (można stosować per-kontroler)
  • @ControllerAdvice - klasa globalnej obsługi wyjątków (metody oznaczone @ExceptionHandler)

Część praktyczna

Podzielona na dwie części:

  • Część 1: przygotowanie środowiska w IntelliJ IDEA do pracy ze Springiem
  • Część 2: prosta aplikacja webowa w Springu wykorzystująca wzorzec MVC

Uwaga: Aby w pełni korzystać z integracji Springa w IntelliJ, przydatna jest wersja Ultimate (licencje studenckie dostępne od JetBrains).