Framework Spring

Tworzenie kompletnej aplikacji

Program podczas którego budujesz realną aplikację

Razem stworzymy aplikację z użyciem frameworku Spring. Zaczynamy od poziomu zero, wiec od samych podstaw tego frameworku, a potem krok po kroku tworzymy i powiększamy projekt, który finalnie zdeployujemy na zewnętrznym hostingu. Aplikacja będzie komunikować się z zewnętrzną bazą danych. Serwer to jedna część. Zrobimy też część frontendową. Zaczniemy od szablonów Thymeleaf, a potem przejdziemy do strony bazującej na ReactJS. Serwer i klient webowy będą porozumiewać się ze sobą z użyciem API typu REST.

Oczywiście sam kod to nie wszystko, więc dowiesz się też jak aplikację wrzucić zarówno na prywatny hosting jak i na chmurę AWS oraz postawić tam bazy danych. Kurs ten uczy rzeczy potrzebnych do stworzenia solidnej aplikacji, którą śmiało może być prezentowana w portfolio albo być podstawą do aplikacji obsługującej nasz biznes. Niejako przy okazji poznajemy najistotniejsze części Frameworku Spring. Koncentrujemy się na tym co jest najwazniejsze - solidne zrozumienie podstaw, tworzenie aplikacji webowej testy jednostkowe, komunikacja z baza danych na wspomaganiu springowym. Bardzo dużo czasu poświęcimy Spring Security.

Agenda tego szkolenia nie jest wyssana z palca, lecz zostala przetestowana w boju przy prowadzeniu osób, ktore sie przebranżawiały i staraly sie zdobyc pierwszą pracę w IT. Jedną z takich dróg mozna obejrzeć na YouTube ➟ [DROGA DO JUNIORA]

Co znajdziesz w kursie

Zaczynamy, bez niespodzianek, od początku, czyli wygenerowania szkieletu projektu za pomocą narzędzia dostępnego na start.spring.io, a następnie poznajemy fundamenty frameworku Spring. Następnie przechodzimy do nauki modelu Model - View - Controler, szablonów HTML i protokołu HTTP. Uczymy jak te wszystkie rzeczy ze sobą połączyć, by otrzymać funkcjonalną aplikację. W kolejnych rozdziałach dowiadujemy się o Spring Data i efektywnym połączeniu Springa z persystencją danych w zewnętrznej bazie danych. Przy okazji dowiemy się conieco o zdarzeniach w Springu oraz o podpakiecie służącym do wysyłania emaili. Następnym krokiem jest podróż w świat REST API, wraz tym jak jak porządnie je dokumentować, tak by korzystanie z niego nie było nauką po omacku. Spring Security pochłonie jeden, duży rozdział. Nauczyły się trzech sposobów na uwierzytelnianie i autoryzację użytkowników. Następnie wrzucimy część serwerową na zewnętrzny hosting. Finalnie stworzymy front-end dla naszej aplikacji w ReactJS.

W dodatkowych materiałach pokaże postawić naszą aplikację w chmurzę AWS oraz pokaże case study popularnego zadania rekrutacyjnego.

Kim jestem

Zdjęcie autora

Hej, nazywam się Paweł Ćwik.

Karierę programistyczną rozpocząłem ponad jedenaście lat temu, z językiem java i jako back-end developer. Z upływem czasu przechodziłem coraz bardziej w kierunku integracji i komunikacji systemów z silnym naciskiem na REST i JMS oraz framework Spring. Następnie przesunąłem się w stronę front-endu i obecnie pracuje z technologiami związanymi z Javascriptem i biblioteką React.

Kilka lat temu rozpocząłem przygodę z nauczaniem programowania - przygodę, która trwa do dziś. Jestem w nią zaangażowany do tego stopnia, że stała się niemal moją drugą, ciągle rozwijaną karierą. Jestem autorem łącznie już sześciu kursów. Są one do odnalezienia na platformie Strefa Kursów i Udemy oraz kanale youtube Clockwork Java.

Prywatnie mam wspaniałą żonę i jestem ojcem trójki maluchów, które dbają o to, bym nie skupiał się wyłącznie na pracy.

kontakt: pawel@clockworkjava.pl

Co o moich kursach sądzą kursanci?

Według moich szacunków, w kursach, szkoleniach i warsztatach, które prowadziłem wzięło udział już ponad 6000 osób. Pomyślałem, że warto przytoczyć kilka z tych opinii, bo mogą Cię one przekonać do zakupu tego kursu. Więcej recenzji moich kursów możesz odszukać na platformach Strefa Kursów i Udemy.

Cześć, przede wszystkim chciałabym Ci bardzo bardzo podziękować za kurs(y), i czas poświęcony na odpowiadanie na moje pytania :). Dzięki projektowi realizowanemu z "Kompletna aplikacja..." moje cv w ogóle było brane pod uwagę na jakichkolwiek rekrutacjach. [...] Wracając do meritum - jestem świeżo po pierwszej rekrutacyjnej. [...] PS Rekrutacja przebiegła pomyślnie od czerwca jestem C++ Developer(wiem, C++, nie Java, ale nie można mieć wszystkiego;)).

Pawel - musze powiedziec ze jestem bardzo zadowolony z Twojego kursu! Praktycznie go calego przerobilem i bardzo duzo sie nauczylem. Najwazniejsze dla mnie byly koncepty i sposob budowy aplikacji. Obecnie w pracy piszemy apke w pythonie i do architektury korzystam garsciami z zebranej wiedzy. Swietnie tlumaczysz! Na tyle dobrze ze kupilem juz kurs Springa i pewnie pociagne dalsze z Udemy. Dzieki! Jeszcze jedno - sila tego kursu jest nacisk na nauke praktycznych umiejetnosci a nie wszystkiego co w dokumentacji 😉

Bardzo dobry kurs, który oceniam na pięć z niewielkim minusem. Myślę, że w niektórych miejscach (choć naprawdę nielicznych) warto by pokusić się o dodatkowy komentarz. Można zauważyć, że niekiedy pomiędzy lekcjami wprowadzone są drobne zmiany w stosunku do kodu jaki pisaliśmy w trakcie wcześniejszych lekcji. Nie jest to żadna poważna niedogodność, tym bardziej, że zawsze możemy pobrać i podejrzeć kod z danej lekcji, porównać i przeanalizować jednocześnie co autor uważał za niezbędne (lub lepsze) rozwiązanie. Podczas własnej analizy kodu oraz wyciągania wniosków również można się wiele nauczyć. Generalnie bardzo polecam kurs z perspektywy osoby jaka nie miała wcześniej styczności ze Springiem, poza niewielką teoretyczną świadomością czym on jest. Wiedza przekazywana jest w jasny sposób, kurs jest fajnie zbudowany. Kolejność modułów jest w mojej ocenie dobrze dobrana i pozwala odpowiednio zrozumieć poruszane zagadnienia. Uważam, że jest to bardzo dobry fundament do dalszej nauki Springa.

Bardzo dobry kurs, podejście prowadzącego nastawione jest na praktyczną naukę tworzenia kompletnej aplikacji, a nie typowe przedstawienie zagadnień na najprostszym możliwym przykładzie.

Super kontakt z prowadzącym, odpowiadał na każde zapytanie w wyczerpujący sposób. Fajnie widzieć też jak aplikacja rozwijana jest krok po kroku, by finalnie powstała taka w pełni funkcjonalna.

Genialny kurs, a pomysł na aplikacje to już w ogóle bomba, w moim przypadku dzięki temu miałem ogromny zapał do robienia kursu i dodawania nowych funkcjonalności do aplikacji. Autor wszystko tłumaczy spokojnie i zrozumiałym językiem, 5 gwiazdek się należy !

FAQ

Czym mogę zwrócić kurs?

Tak. Masz na to 14 dni. Nie wymagam podania przyczyny (chociaż byłoby miło otrzymać feedback) - po prostu piszesz do mnie i załatwiamy zwrot.

Jak długo trwa kurs?

Kurs posiada ponad 20 godzin materiału. Po zakupie kursu co dwa dni wysyłam mailem zestaw kilku lekcji (łącznie około 30 minut) do opanowania przez te dwa dni. Natomiast masz dostęp do całości udostępnionych materiałów i możesz go sobie rozłożyć w czasie wedle potrzeb. Dostęp do danej edycji kursu jest dożywotni. W każdym momencie jestem dostępny pod adresem mailowym pawel@clockworkjava.pl lub na dedykowanej grupie i pomogę jeśli coś w kursie będzie wymagało dodatkowych wyjaśnień.

Dla kogo przeznaczony jest kurs? Co musze już umieć?

Kurs przeznaczony jest dla osób, które chcą poznać framework Spring w jego nowoczesnej odmianie, bądź ugruntować i poszerzyć posiadaną już wiedzę.

Czy po zakończeniu kursu otrzymam certyfikat?

Nie, nie zamierzam nic takiego wystawiać. Otrzymasz coś o wiele lepszego jeśli chodzi o wpis do CV - duży projekt na GitHubie, do portfolio, do którego będzie można się odnosić w trakcie rozmowy kwalifikacyjnej.

Co Cię czeka - Szczegołowy spis lekcji

  1. Na starcie 1 min.
    1. Plan kursu
  2. Fundamenty1g. 2 min.
    1. Hello Spring!
    2. Wstrzykiwanie zależności
    3. Spring Beans
    4. Spring Components
    5. Klasy konfiguracyjne
    6. XML?
    7. @Autowired
    8. Wstrzykiwanie poprzez metodę
    9. Konflikt beanów
    10. Wstrzykiwanie kolekcji
    11. Testy jednostkowe, bezkontekstowe
    12. Testy jednostkowe, kontekstowe
    13. Bean, a obiekt domenowy
    14. Podsumowanie
    15. Ćwiczenia praktyczne
  3. Podstawy pracy z aplikacjami webowymi 34 min.
    1. Utworzenie projektu
    2. Modele działania aplikacji webowych
    3. Pierwszy kontroler
    4. Pierwszy szablon
    5. Testy jednostkowe kontrolera
  4. Developer Experience11 min.
    1. Hot Swap
    2. Lombok
  5. Model w architekturze MVC55 min.
    1. Obiekty domenowe
    2. Model we wzorcu MVC
    3. Testy jednostkowe
    4. Ćwiczenia praktyczne
    5. Serwisy i repozytoria
    6. Ćwiczenia praktyczne
    7. Mockowanie zależności zewnętrznych
    8. Ćwiczenia praktyczne
  6. Obsługa HTTP w Spring Framework2g. 10 min.
    1. Protokół HTTP
    2. Formularz w Thymeleaf
    3. Standardowa obsługa POST
    4. Ćwiczenia praktyczne
    5. Data binding w Spring
    6. Konwersja typów
    7. Testy jednostkowe dla POST
    8. Ćwiczenia praktyczne
    9. Ćwiczenia praktyczne
    10. Thymeleaf two-way binding
  7. Aktualizacja i usuwanie danych1 g. 9 min.
    1. Unikalne ID
    2. Ścieżki URL
    3. Obsługa DELETE
    4. Obsługa PUT
    5. Testy jednostkowe
    6. Ćwiczenia praktyczne
  8. Biblioteka Bootstrap22 min.
    1. Dodanie bibliotek frontendowych do projektu
    2. Nawigacja
    3. Formatowanie tabel
    4. Formatowanie formularzy
  9. Wprowadzenie do Spring Data46 min.
    1. Dodanie Spring Data do projektu
    2. Konfiguracja Hibernate w Spring
    3. Zapisywanie do bazy danych
    4. Ćwiczenie praktyczne
    5. JpaRepository
  10. Przetwarzanie serii zadań HTTP2 g. 46 min.
    1. Domena rezerwacji - utworzenie
    2. Kreator rezerwacji - krok pierwszy
    3. Kreator rezerwacji - krok drugi
    4. Spring Validation i nie tylko
    5. Własne walidacje
    6. Testy Kontrolera
    7. Rozszerzenie widoku
    8. Wyszukiwanie pokoi - predykaty i ich testowanie
    9. Ćwiczenie praktyczne
    10. Utworzenie tymczasowej rezerwacji
    11. Dostosowanie data binding do własnych potrzeb
  11. Zdarzenia (events) w Spring49 min.
    1. Czym są eventy
    2. Tworzenie własnych eventów i ich obsługa
    3. Alternatywne sposoby na tworzenie i obsługę zdarzeń
    4. Eventy synchroniczne i asynchroniczne
  12. Wysyłanie wiadomości email1 g. 17 min.
    1. EmailSender
    2. Parametryzacja konfiguracji
    3. Parametry uruchomienia programu
    4. Potwierdzenie rezerwacji - kontroler
    5. Potwierdzenie rezerwacji - widok
    6. Zadania cykliczne - scheduled tasks
    7. Dodanie danych gościa do rezerwacji
    8. Dodanie numeru klienta
    9. Koniec pracy z Thymeleaf
  13. Proces tworzenia rezerwacji za pomocą REST API1 g. 29 min.
    1. O co chodzi z REST i instalacją POSTMAN
    2. Pierwszy REST Controller
    3. Postać zwracanych danych
    4. Obsługa wyjątków
    5. Testy dla @RestController
    6. Rozbudowa domeny
    7. Używanie rekordów do DTO
    8. Rozbudowa domeny cd.
    9. Porządek z DTO
    10. Pobieranie szczegółów pokoju za pomocą REST
    11. Tworzenie rezerwacji za pomocą REST
  14. Klastyczny CRUD w REST API57 min.
    1. Read - GET
    2. Create - POST
    3. Delete - DELETE
    4. Zależności cykliczne i ich rozwiązanie
    5. Update - PUT
    6. Update - PATCH
  15. Dokumentowanie REST API8 min.
    1. OpenAPI
    2. Swagger
    3. Rozbudowa dokumentacji za pomocą adnotacji
  16. Spring Data c.d. i zarządzanie bazą danych w projekcie1 g. 27 min.
    1. Pliki schema.sql i data.sql
    2. Persystencja danych, a testy jednostkowe
    3. Spring Data - Query Methods
    4. Spring Data - zapytania wieloparametrowe i łączenie warunków
    5. Kiedy baza, a kiedy Java
    6. Spring Data - zapytania po drzewie obiektów
    7. Własne zapytania w repozytoriach
    8. Wersjonowanie schematu bazy danych za pomocą flyway
    9. Stworzenie zewnętrznej bazy danych na MyDevil
    10. Połączenie z zewnętrzną bazą i rozwiązywanie problemów migracyjnych
    11. Rozbudowa bazy
  17. Spring Security2 g. 23 min.
    1. Dodanie zależności i domyślne ustawienia
    2. Konfiguracja i Basic Auth
    3. Ustawienie wolnego dostępuy do wybranych zasobów
    4. Przechowywanie użytkowników i szyfrowanie haseł
    5. Role i zabezpieczenie endpointów HTTP
    6. Zabezpieczenie za pomocą @PreAuthorize
    7. CSRF
    8. Form Auth i SessionID
    9. Własna strona logowania
    10. Obsługa wylogowywania
    11. Zapisywanie użytkowników w bazie danych
    12. JWT - teoria i zależności
    13. JWT - Filtry w Spring
    14. JWT - dane logowanie
    15. JWT - tworzenie token
    16. JWT - zwracanie tokena w ciele odpowiedzi
    17. JWT - autoryzacja
    18. JWT - refresh token
    19. JWT i Postman
  18. Deployment aplikacji na zewnętrznym serwerze 7 min.
    1. Deployment aplikacji na MyDevil
  19. Porządki w aplikacji 30 min.
    1. Devtools a produkcja
    2. Usunięcie artefaktów Thymeleafowych
    3. Spring Actuator
    4. Spring Actuator - dodatkowe endpointy
    5. Spring Actuator - korzystanie z tagów
    6. Statyczna analiza kodu - checkstyle
    7. Checkstyle - konfiguracja wykluczeń
  20. [BONUS] Deployment aplikacji w chmurze AWS30 min.
    1. Utworzenie bazy danych
    2. Spring Profiles
    3. Depolyment na AWS Elastic Beanstalk
    4. Konfiguracja security groups
    5. Aktualizacja aplikacji
    6. Koszta!
  21. Front w ReactJS, korzystanie z REST APIs26 min.
    1. Utworzenie projektu za pomocą create-react-app
    2. Szkielet aplikacji
    3. Obsługa logowania
    4. Podstawowe komponenty i zapytanai REST
    5. Obsługa wylogowania
  22. [BONUS] Popularne zadanie rekrutacyjne - implementacja i obrona30 min.