Pełna agenda – spis modułow
- Integracja i monitoring Mikroserwisów
- Systemy kolejkowe i skalowanie aplikacji
- Apache Kafka – wprowadzenie
- Apache Kafka – zaawansowane zagadnienia
- Apache Kafka w Spring Boot
- Od JDBC do Mapowania Obiektowo Relacyjnego (ORM)
- ORM na przykładzie JPA i Hibernate
- Anotacje, Spring + Hibernate oraz dobre praktyki
- Spring Data
- Czysty kod i wzorce projektowe
- Czysty kod, Domain Model i dobre praktyki
- Stabilny i testowalny kod – narzędzia
- Stabilny i testowalny kod – techniki
- Maven
Naucz się tworzyć czysty, stabilny i testowalny kod.
Poznaj sprawdzone rozwiązania i przekonaj się jak bardzo ułatwią Ci pracę
Program szkoleniowy dla programisty Java: Spring Boot, Testowanie, Clean Code i Design Patterns, Maven, Integrowanie aplikacji (synchroniczne i asynchroniczne).
Integracje i monitoring Mikroserwisów
Lista lekcji
- Integrowanie mikrousług – wyzwania
- Sposoby integrowania systemów – synchroniczne i przez systemy kolejkowe
- Circuit Breaker Pattern – wzorzec bezpiecznika
- Retry Pattern – ponawianie operacji
- Load Balancing – rozkładanie ruchu
- Service Discovery – proces wykrywania serwisów
- Log Aggregation – centralizacja logów
- Log Aggregation – demo
- Log Aggregation – dobre praktyki logowania
- Tracing – wprowadzenie i demo
- Tracing – instrumentacja kodu, Brave i Spring Cloud Sleuth
- Tracing – przekazywanie trace context
- Monitoring – wprowadzenie
- Monitoring – modele działania systemów
- Monitoring – perspektywy dashboardów
- Monitoring – rodzaje metryk, statystyka i interpretacja
- Caching – pamięć podręczna
- Distributed i Replicated Cache
- Distributed i Replicated Cache – persistence
- Zadanie domowe
Systemy kolejkowe i skalowanie aplikacji
Lista lekcji
- Systemy kolejkowe
- Instalacja systemu kolejkowego do testów
- JMS
- Spring JMS
- Gwarancje odebrania wiadomości
- Gwarancje dostarczenia wiadomości
- Odrzucanie wiadomości
- Skalowanie aplikacji opartych o systemy kolejkowe
- Wysoka dostępność aplikacji – Leader Election
- Idempotentność operacji
- Zadanie domowe
Apache Kafka – wprowadzenie
Lista lekcji
- Wprowadzenie do systemów kolejkowych
- Wyzwania high availability
- Problem kolejności odczytu
- Grupy konsumentów
- Kilka słów o Apache Kafka
- Instalacja + konfiguracja Apache Kafka CLI
- Ćwiczenia teorii Apache Kafka
- Producent wiadomości w Java
- Konsument wiadomości w Java
- Serializacja Json
- Deserializacja Json
- Konsument w wątku
- Kafka Docker
- Aplikacja HWMonitor
- JMS vs Apache Kafka
- Zadanie domowe
Apache Kafka – zaawansowane zagadnienia
Lista lekcji
- Gwarancje dostarczenia wiadomości
- Producent wiadomości – potwierdzenia ACKS
- Producent wiadomości – typy producenta
- Producent wiadomości – wydajność producenta
- Producent wiadomości – idempotentny producent
- Producent wiadomości – bezpieczny producent
- Producent wiadomości – bezpieczny producent demo
- Konsument wiadomości – szybki konsument
- Konsument wiadomości – strategie commitowania offsetu
- Konsument wiadomości – proces rebalancingu
- Konsument wiadomości – bezpieczny konsument
- Podsumowanie modułu
- Zadanie domowe
Apache Kafka w Spring Boot
Lista lekcji
- Szybki producent wiadomości w Spring
- Bezpieczny producent wiadomości w Spring
- Konsument wiadomości w Spring
- Sterowanie offsetem wiadomości
- Konsument exactly-once
- Rozproszony cache – idempotentny konsument
- Zatruta wiadomość
- Error handler
- Ponowienia odbioru & DLT – teoria
- Ponowienia odbioru & DLT – praktyka
- Przetwarzanie wsadowe
- Proces rebalancingu w przetwarzaniu wsadowym
- Proces rebalancingu w Spring
- Zadanie domowe
Od JDBC do Mapowania Obiektowo Relacyjnego (ORM)
Lista lekcji
- Korzystanie z relacyjnych baz danych w Java
- Transakcyjność w JDBC
- CRUD w Relacyjnej bazie danych
- Budowanie zapytań w JDBC
- Wyrażenia proste
- Ataki SQL Injection
- Statement – jako podstawowa instrukcja zapytania
- Kursory w wyrażeniach
- PreparedStatemnt – bezpieczne parametryzowanie zapytań
- CallableStatement – wywoływanie procedur i funkcji
- Mapowanie danych w JDBC
- Problemy i bolączki JDBC
- Mapowanie Obiektowo Relacyjne (ORM)
- MyBatis jako prosty framework ORM
- JdbcTemplate – proste mapowanie danych w Spring
- Porównanie MyBatis i JDBCTemplate
- Zadanie domowe
ORM na przykładzie JPA i Hibernate
Lista lekcji
- Standard JPA (Java Persistent API)
- Wstęp do Hibernate
- Różne sposoby konfiguracji Hibernate
- Wstęp do Spring Data
- Hibernate vs Spring Data
- Architektura Hibernate
- Entity manager, cykl życia encji – wstęp
- Stan transient – stworzenie niezarejestrowanego obiektu
- Stan detached – ręczne wyrejestrowanie obiektu
- Stan removed – usuwanie danych
- Stan managed – synchronizacja stanu obiektu z bazą danych
- Sesja i cache obiektów
- Timeouty w Hibernate
- Operacje nie aktualizujące cache
- Commit/rollback w Hibernate
- Create w Hibernate
- Read w Hibernate
- Update w Hibernate
- Delete w Hibernate
- Flush w Hibernate
- Zadanie domowe
Anotacje, Spring + Hibernate oraz dobre praktyki
Lista lekcji
- Anotacje – dane i atrybuty
- Anotacje – autogeneracja kluczy głównych
- Anotacje – kompozycja i dziedziczenie
- Anotacje – powiązania i kolekcje
- Anotacje, które warto znać
- Relacja one-to-one
- Relacja one-to-many
- Relacja many-to-one
- Relacja many-to-many
- Anotacje w Hibernate
- Lazy loading, Eager loading, Problem N+1 (query)
- Kaskada operacji, deleteOrphans
- BestPractice + Hints – śledzenie zapytań SQL
- BestPractice + Hints – o czym warto pamiętać
- BestPractice + Hints – unikanie niepotrzebnych operacji
- BestPractice + Hints – przetwarzanie wsadowe
- Zadanie domowe
Spring Data
Lista lekcji
- Moja pierwsza aplikacja Spring Data
- Wyszukiwanie w Spring Data
- Mapowanie odpowiedzi do DTO
- Modyfikacja danych w Spring Data
- JpaRepository vs CrudRepository
- Manualne transkacje w Spring
- Automatyczne transakcje w Spring
- Wyjątki w transakcjach
- Rodzaje propagacji transakcji
- Read only
- Lekcja JPQL, HQL
- JOIN a JOIN FETCH
- Subquery
- Criteria API
- Anotacje org.springframework.data.*
- Zadanie domowe
Czysty kod i wzorce projektowe
Lista lekcji
- Po co czysty kod
- Znaczące nazwy
- Funkcje
- Refaktoryzacja funkcji – demo
- Komentarze
- Refaktoryzacja przykładowej aplikacji
- Czym jest SOLID
- SOLID – SRP
- SOLID – SRP demo
- SOLID – OCP
- SOLID – OCP demo wzorzec obserwatora
- SOLID – OCP demo wzorzec dekoratora
- SOLID – LSP
- SOLID – LSP demo
- SOLID – ISP
- SOLID – ISP demo
- SOLID – DIP
- Zadanie domowe
Czysty kod, Domain Model i dobre praktyki
Lista lekcji
- Prawo Demeter
- Zasady KISS & YAGNI & DRY
- Anemic Domain Model vs Rich Domain Model
- Rich Domain Model w bazie danych & strategie mapowania
- Fail Fast
- Obsługa błędów
- Prawidłowe wykorzystanie optional
- Pętle i streamy
- Pakietowanie i wzorzec fasady
- Zespół to podstawa
- Statyczne analizatory kodu
- Checkstyle
- PMD
- SonarQube
- Tipy & dobre praktyki
- Co dalej?
- Zadanie domowe
Stabilny i testowalny kod – narzędzia
Lista lekcji
- Wprowadzenie
- Czym jest testowanie?
- Testowanie w JUnit, możliwości, czytelne testy
- Testy parametryzowane
- Biblioteki asercji – sposoby weryfikacji kodu
- Testowanie wyjątków
- Testowanie equals(), hashCode()
- Mocks, Fakes, Dummies. Koncepcje dublerów. Czego nie mockować
- Mockito – mocki, spy, adnotacje, verify
- Mockito – argument matcher, argument captor, answers
- Mocki. Dwie szkoły testowania
- Zasady pisania dobrych testów
- Clean Code w testach
Stabilny i testowalny kod – techniki
Lista lekcji
- Test Builders, matki obiektów
- Piramida testów – tworzenie efetywnie działającego zestawu testów
- Reużywalne fragmentu testów: klasy steps, assert pattern
- Strategie testowania I/O, izolowanie i testy integracyjne
- Consumer-Driven Contract, testy REST
- Testowanie z bazą danych
- Test Containers
- Metryka Code Coverage
- Testy mutacyjne
- Zadanie domowe
Maven
Lista lekcji
- Przedstawienie modułu i maven
- Wprowadzenie
- Instalacja i konfiguracja
- Pierwsza aplikacja, Maven Coordinates, Maven Directory Layout
- Deklarowanie zależności, scope, wersje
- Wersjonowanie, SNAPSHOT, semver
- Stworzenie biblioteki jar
- Repozytoria: lokalne, remote, struktura repozytorium, konfiguracja remote
- Cykl życia, fazy i cele
- Pluginy mavenowe
- Aggregate pom, Parent pom, Effective pom
- Zarządzanie zależnościami: Dependency management, Bill of materials
- Budowanie złożonych paczek: fatjar, executable jar, assembly
- Paramery i profile, filtrowanie
- Deployment, distributionManagement
- Instalacja Nexus
- Proces wydawania oprogramowania: release plugin
- Maven CI Friendly
- jgitver
- Rozwiązywanie popularnych problemów
- Podsumowanie