Spring Boot Autokonfiguracja

Kurs Spring Boot – Rest API, Spring Data, Spring Security, Spring Cache

Kurs Spring Boot, w którym opowiem o podstawach związanych ze Springiem i Spring Bootem. W kursie tym, poza poruszeniem podstawowych zagadnień związanych ze Spring Bootem, mam zamiar przedstawić wiele komponentów, które składają się na ten framework. Poza tym tworzę także aplikację, która wystawia usługi restowe.

Kurs Spring Boot #1 – Autokonfiguracja i przykładowy projekt

W tym odcinku opowiadam o tym, jak działa autokonfiguracja w Spring Boot. Jak skonfigurować projekt poprawnie oraz jak połączyć się z bazą danych (in memory) H2 przy użyciu Spring Data JPA

 

Co znajdziesz w tej części:

  • Tworzę przykładową aplikację
  • Opowiadam o tym czym jest autokonfiguracja
  • Dodaję konfigurację do bazy danych (in memory) H2 i dodaję zależność do Spring Data JPA
  • Pokazuję jak uruchomić konsolę bazy H2
  • Pokazuję, jak ustawiać strukturę bazy danych korzystając z plików schema.sql i data.sql
  • Opowiadam o tym jak autokonfiguracja działa
  • Pokazuję jak dostosować komponenty skonfigurowane przez autokonfigurację

 

Kurs Spring Boot #2 – Kontekst, Inversion of Control (IoC), Wstrzykiwanie zależności

Druga część kursu Spring Boota, w której opowiadam o Inversion of Control (IoC), czyli odwróceniu sterowania w Springu, a także o tym jak działa kontekst i wstrzykiwanie zależności.

 

 

Co znajdziesz w tej części:

  • Co to jest Inversion of Control
  • Jak działa Kontekst w Springu?
  • Działanie kontener IoC w praktyce
  • Jak Spring znajduje beany (@ConmponentScan)
  • Jaki jest zasięg beanów w Springu(Scope)
  • Jak wstrzykiwać zależności w Springu (Dependency Injection)

 

Kurs Spring Boot #3 – Jak tworzyć REST API?

W tej części przedstawiam jak stworzyć REST API i jak tworzyć je prawidłowo. Także pokazuję jak dodać do projektu Swaggera, narzędzie do przeglądania i rozwijania api restowego. Pokazuje na przykładzie, jak wygląda problem n+1 i jak wykryć go w aplikacji.

 

 

Co znajdziesz w tej części:

  • Opowiadam o tym, co zmieniło się w projekcie
  • Generuję dane testowe
  • Opowiadam o tym, jak tworzyć REST API
  • dodaję i konfiguruję Swaggera w projekcie
  • Tworzę serwis i repozytorium (Spring Data JPA)
  • Pokazuję problem n+1 dla Hibernate

Powiązany artykuł:
Jak tworzyć REST API?

 

Kurs Spring Boot #4 – Jak działa Spring Data? Problem N + 1 i stronicowanie wyników

W czwartej części kursu opowiadam o tym, jak działa Spring Data. Pokazuję jak pozbyć się problemu N+1, który często pojawia się przy korzystaniu z Hibernate. Pokazuję także jak odpowiednio postronicować wyniki, tak żeby api działało optymalnie.

 

 

Co znajdziesz w tej części:

  • Dlaczego powstało Spring Data
  • Jak działa Spring Data JPA
  • Jak tworzyć własne metody w Spring Data
  • Optymalizacja zapytań JPA, eliminuję problem N + 1
  • Stronicowanie wyników w Spring Data
  • Jak stronicować wyniki zapytań z joinem
  • Leniwe dociąganie danych w Hibernate (lazy loading)
  • Jak pozbyć się problemu N+1 używając do tego mapowania obiektów
  • Przekazywanie parametrów z requesta do REST API

Powiązany artykuł:
Hibernate i problem N + 1 zapytań

 

Kurs Spring Boot #5 – Stronicowanie dwóch tabel i Sortowanie wyników

W tej części kursu opowiadam o tym, jak pobrać postronicowane wyniki z dwóch powiązanych table jednocześnie (posty i komentarze), tak żeby to było jak najbardziej wydajne. Pokazuję także jak sortować wyniki w Spring Data.

 

 

Co znajdziesz w tej części:

  • Stronicuję wyniki pobierane z dwóch tabel
  • Pokazuję jak w prosty sposób dodać sortowanie wyników w REST API

 

Kurs Spring Boot #6 – Tworzenie edycja i usuwanie encji Hibernate

Jak zapisywać poprawnie encje korzystając ze Spring Data i Hibernate?

W tym odcinku pokazuje jak stworzyć metody do zapisu, edycji i usuwania encji, czyli jak tworzyć CRUD. Skupiam się na problemach, jakie możesz napotkać przy tworzeniu takich operacji.

 

 

Co znajdziesz w tej części:

  • Poprawiam błędy parametrów domyślnych (z poprzednich odcinków)
  • Wyjaśniam jak działa mechanizm HotSwap w debugerze
  • Tworzę metoda do zapisywania encji
  • Wyjaśniam co powinna zwracać metoda zapisu?
  • Jak generować kolejne id dla encji?
  • Tworzę metoda do edycji encji
  • Przedstawiam prawidłowy sposób edycji encji
  • Tworzę metoda do usuwania encji
  • Pokazuję jak kaskadowo usuwać encje

 

Kurs Spring Boot #07 – Spring Security i JWT Token

W tym odcinku zaimplementuję uwierzytelnienie w serwisie restowym korzystając ze Spring Security. Pokazuje, jak uwierzytelniać użytkowników poprzez sesję http, a następnie dostosowuję to uwierzytelnienie do obsługi Json Web Token.

 

 

 

Co znajdziesz w tej części:

  • Jak przystosować Spring Security do JWT?
  • Co to jest Json Web Token?
  • Tworzę konfigurację Spring Security
  • Dodaję kontroler do logowania
  • Dodajemy filtr do logowania Jsonem
  • Testuję działające uwierzytelnienie przy użyciu sesji http
  • Implementuję obsługę Json Web Token
  • Dodaję zwracanie tokena w successHandlerze
  • Dodaję filtr do autoryzacji endpointów
  • Dostosowuję Swaggera do obsługi Json Web Token
  • Jak wstrzyknąć uwierzytelnionego użytkownika do metody kontrolera?

Powiązane artykuły:
Spring Security – uwierzytelnienie przy pomocy jsona
Spring Security i Json Web Token

 

Kurs Spring Boot #08 – Spring Cache

W tym odcinku opowiadam o tym jak używać cache w Springu

W tej części znajdziesz:

  • Co to jest cache?
  • Jak działają metody bez cache?
  • Jak skonfigurować cache w Springu?
  • Jak cache’ować metody w Springu?
  • Jak działa adnotacja @Cachable?
  • Jak dział cache’owanie w Springu?
  • Providery cache dostępne w Springu
  • Konfiguracja Ehcache w aplikacji
  • Konfiguracja cache dla metod
  • Jak działa adnotacja @CachePut?
  • Czyszczenie cache w Springu
  • Jak działa adnotacja @CacheEvict?

Powiązane artykuły:

Spring AOP – jak używać?

 

Kurs Spring Boot #09 – Liquibase

W tej części kursu opowiadam o tym jak wykorzystać w projekcie Liquibase do automatycznego zarządzania schematem bazy danych. Jak go skonfigurować i jak w odpowiedni sposób przygotować changesety. Sporą część materiału poświęciłem temu, jakie problemy możesz napotkać korzystając z tego narzędzia.

 

W tej części znajdziesz:

  • Po co zarządzać schematem bazy danych?
  • Różne sposoby na zarządzanie schematem bazy danych
  • Konfiguracja Liquibase’a
  • Dodawanie przykładowego changeseta
  • Konfiguracja changesetów w projekcie
  • Dodaję changesety w SQLu
  • Jak działa Liquibase?
  • Problemy związane z Liquibase

Powiązane artykuły:

Czy automatyczne tworzenie bazy przez Hibernate jest dobre?

 

Kurs Spring Boot #10 – Migracja do Mysql

W tej części kursu skupiam się na problemach, jakie można napotkać podczas migracji projektu Spring Bootowego na bazę Mysql.

 

W tej części znajdziesz:

  • Po co migrować projekt do Mysql?
  • Tworzenie bazy danych w Mysql
  • Konfiguracja Mysql w aplikacji Spring
  • Błąd typu danych w Mysql
  • Tabele dla użytkowników w Liquibase
  • Brak rollbacku changeseta w Mysql

 

Kurs Spring Boot #11 – Testy integracyjne aplikacji zabezpieczonej Json Web Tokenem

W tej części kursu pokazuję krok po kroku jak pisać testy integracyjne dla aplikacji, która jest zabezpieczona tokenem JWT, korzystając z MockMvc. Ale także pokazuję jak przetestować logowanie i wywoływanie usług z użyciem tokena JWT.

W tej części znajdziesz:

  • Co robi adnotacja @SpringBootTest?
  • Konfiguracja testów integracyjnych w Spring Boot
  • Tworzenie i konfiguracja osobnej bazy danych dla testów integracyjnych
  • Co to jest MockMvc?
  • Pierwsze wywołanie z MockMvc
  • Konfiguracja testów z adnotacją @WithMockUser
  • Konwersja odpowiedzi z testowanej metody na model
  • Jak powinien wyglądać prawidłowy setup testu integracyjnego?
  • Jak nie zaśmiecać bazy danych testami integracyjnymi
  • Testowanie Logowania do aplikacji
  • Testowanie wywoływania metod z tokenem JWT

Powiązane artykuły:

Spring Security

Json Web Token

 

Link do Playlisty: https://www.youtube.com/playlist?list=PLLIGVl2WVN6ugud2cc3OShwWoTt65jzSL

 

PS. Kolejne części po ich publikacji zostaną tutaj dodane.

 

Mateusz Dąbrowski

Cześć jestem Mateusz, zajmuję się programowaniem już ponad 12 lat z czego ponad 8 programuję w Javie. Zapraszam Cię do lektury mojego bloga. Możesz przeczytać więcej o mnie >>TUTAJ<<