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>
Zajęcia 14 i 15. - Framework Spring i wzorzec MVC
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
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).




