Zakres kursu obejmuje:
- Krótkie wprowadzenie do najnowszej wersji Javy
- Podstawy Spring Framework
- Podstawy framework-a
- Omówienie modułów
- Dependency Injection / Inversion of Control
- Podstawy Spring Boot
- Właściwości (Properties)
- Tworzenie API
- Tworzenie rest kontrolerów
- Korzystanie z narzędzia od tworzenia dokumentacji OpenAPI (Swagger)
- Omówienie CRUD
- Integracja z Bazą danych
- Spring Data JPA
- Encje
- H2 in memory sql database
- Transakcyjność
- Lombok - minimalizacja boilerplate kodu
- Użycie Loggera
- Podstawy git (Tworzenie projektu, branching, tworzenie pull request-ów)
- Deployment aplikacji na Heroku
git clone https://github.com/greencashew/warsztaty-podstawy-springa.git
git submodule update --init --recursive
Gotowy projekt: https://github.com/greencashew/spring-link-shortener
Katalogi 05.* zawierają kolejne etapy tworzenia projektu w spring framework:
- Wygenerowany projekt na stronie https://start.spring.io/
- Dodane zależności:
- Spring Web
- Spring Data JPA
- H2 Database
- Lombok
- Spring Boot DevTools
- Dodane zależności:
- Dodanie pliku system.properties w celu poinformowania heroku w jakiej wersji javy ma uruchmić środowisko
- Po uruchomieniu aplikacji w przeglądarce pod adresem http://localhost:8080/ powinna pojawić się następująca strona:
- Dodanie RestController-ów oraz Data Transfer Object-ów
- Dodanie zależności dokumentacji OpenAPI (Swagger) do pom.xml
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.6</version>
</dependency>
Zachowanie:
- Po uruchomieniu aplikacji w przeglądarce pod adresem http://localhost:8080/swagger-ui/index.html powinna pojawić się strona swaggerUI, opisująca dostępne restowe endpointy:
- Wywołany endpoint powinien zwrócić wartości wpisane na stałe w kodzie kontrolerów.
- Dodanie warstwy serwisu w pakiecie
link
- Dodanie integracji z serwisem w kontrolerach
- LinkDto został przeniesiony do katalogu api
- Została dodana HashMap-a zamiast bazy danych
- Logika aplikacji na tym etapie powinna działać w następujący sposób:
- Po utworzeniu linku skróconego strona przekierowania przenosi do właściwiej strony.
- W przypadku wpisania niewłaściwego linku przekierowania powinien pojawić się stosowny komunikat
- Restart aplikacji skutkuje usunięciem się wszystkich utworzonych skróconych linków.
- Zablokowanie dodawania linków o takim samym identyfikatorze (aliasie)
- Obsługa wyjątków
- Napisanie testów serwisu
- Dodana prosta strona wyświetlająca formularz dodawania linku
- Pola formularza są wysyłane w formacie json do backend-u
- W LinkServiceImpl hashmap-a została zastąpiona integracją z bazą danych
- Zostało utworzone repozytorium Spring Data LinkRepository oraz encja LinkEntity
- w application.properties została dodana konfiguracja bazy danych H2
- Aplikacja jest w pełni funkcjonalna tak jak uprzednio
- Dodatkowo poprzez klienta webowego można sprawdzić, czy rekordy zostały dodane do bazy danych H2:
- Klient dostępny pod adresem: http://localhost:8080/h2-console/
- Dane dostępowe takie same jak w pliku application.properties
- Dodanie obsługi wyjątków w kontrolerach (GlobalControllerAdvisor i LinkManageControllerAdvisor)
- Dodany globalny DTO do obsługi wyjątków (ExceptionResponse)
- Dodanie wyjątku LinkAlreadyExistsException
- W przypadku próby dodania linku o tym samym identyfikatorze pojawia się następujący komunikat:
- W przypadku próby przekierowania linku o nieprawidłowym identyfikatorze pojawia się następujący komunikat:
- Dodana walidacja pól wewnątrz klas CreateLinkDto oraz LinkManageController
- Dodana zależność w pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
- Dodana obsługa wyjątku w GlobalControllerAdvisor
- W przypadku podania daty wcześniejszej niż aktualna pojawia się następujący komunikat:
- Dodanie pełnej implementacji pozostałych CRUD-owych operacji:
- Usuwanie linku
- Aktualizacja linku
- Otrzymywanie danych o skróconym linku
- Utworzenie scheduler-a usuwającego przeterminowane skrócone linki