Spring w akcji
Spring
jest frameworkiem ułatwiającym tworzenie nowoczesnych aplikacji w
Javie. To narzędzie, które dynamicznie się rozwija i z
każdym nowym wydaniem zapewnia programistom kolejne, ekscytujące
możliwości. Piąta wersja Springa okazała się krokiem milowym. Obecnie
projektanci mogą tworzyć mikrousługi, korzystać z funkcji programowania
reaktywnego i doskonalić budowanie aplikacji zgodnie z modelem MVC.
Dzięki pełnej integracji Springa ze Spring Boot nawet najbardziej
złożone projekty wymagają minimalnej ilości kodu konfiguracyjnego. W
efekcie tworzone aplikacje internetowe są w większym stopniu skalowalne
i efektywniejsze w wykorzystywaniu wątków.
To
kolejne, uzupełnione i zaktualizowane wydanie przewodnika po frameworku
Spring. Książka jest napisana w zwięzłym, przejrzystym i jasnym stylu,
dzięki czemu szybko zrozumiesz zasady pracy ze Springiem i zbudujesz
nowoczesną aplikację internetową współpracującą z bazą
danych. Pokazano tu techniki programowania reaktywnego, pisania
mikrousług, wykrywania usług, wyjaśniono również pracę z API
RESTful i zasady wdrażania aplikacji. Nauczysz się też stosować
najlepsze praktyki programowania w Springu. Książka jest znakomitą
pomocą dla programistów Javy, którzy dopiero
zaczynają pracę z tym frameworkiem, a także dla tych, którzy
chcą opanować nowe rozwiązania oferowane przez kolejne wersje
ekosystemu Springa.
W tej książce między innymi:
- solidne wprowadzenie do
frameworków Spring i Spring Boot
- integracja aplikacji
Springa z innymi aplikacjami
- programowanie reaktywne w
tworzeniu aplikacji internetowych
- tworzenie mikrousług i
praca ze Spring Cloud
- wdrażanie aplikacji w
środowisku produkcyjnym i korzystanie ze Spring Boot Admin
Opinie
o Springu w akcji. Wydanie IV
Wprowadzenie
Podziękowania
O książce
Dla kogo jest przeznaczona ta książka?
W jaki sposób jest zorganizowana ta książka mapa drogowa
Informacje o kodzie źródłowym
Forum poświęcone książce
Inne zasoby w internecie
O autorze
Część I
Podstawy Springa
Rozdział 1.
Rozpoczęcie
pracy ze Springiem
1.1. Czym jest Spring?
1.2. Inicjalizacja aplikacji Springa
1.2.1. Inicjalizacja projektu Springa za pomocą Spring Tool Suite
1.2.2. Analiza struktury projektu Springa
Analiza pliku specyfikacji kompilacji
Klasa początkowa aplikacji
Testowanie aplikacji
Inna nazwa menedżera testów
1.3. Utworzenie aplikacji Springa
1.3.1. Obsługa żądań internetowych
Dlaczego Thymeleaf?
1.3.2. Definiowanie widoku
1.3.3. Testowanie kontrolera
1.3.4. Kompilacja i uruchomienie aplikacji
1.3.5. Poznajemy Spring Boot DevTools
Automatyczne ponowne uruchamianie aplikacji
Automatyczne odświeżenie przeglądarki WWW i wyłączenie bufora szablonu
Wbudowana konsola H2
1.3.6. Przegląd
1.4. Możliwości Springa
1.4.1. Podstawowy framework Spring
1.4.2. Spring Boot
1.4.3. Spring Data
1.4.4. Spring Security
1.4.5. Spring Integration i Spring Batch
1.4.6. Spring Cloud
Podsumowanie
Rozdział 2.
Tworzenie aplikacji internetowej
2.1. Wyświetlanie informacji
2.1.1. Zdefiniowanie domeny
2.1.2. Utworzenie klasy kontrolera
Obsługa żądania GET
2.1.3. Przygotowanie widoku
2.2. Przetwarzanie wysłanego formularza
2.3. Weryfikacja danych wyjściowych formularza
2.3.1. Deklarowanie reguł weryfikacji danych
2.3.2. Przeprowadzanie weryfikacji danych podczas ich pobierania z
formularza
2.3.3. Wyświetlanie błędów operacji sprawdzania poprawności
danych
2.4. Praca z kontrolerem widoku
2.5. Wybór biblioteki szablonów widoku
2.5.1. Buforowanie szablonów
Podsumowanie
Rozdział 3.
Praca z danymi
3.1. Odczyt i zapis danych za pomocą JDBC
3.1.1. Przygotowanie domeny do obsługi trwałego magazynu danych
3.1.2. Praca z klasą JdbcTemplate
Definiowanie repozytorium JDBC
Wstawianie rekordu
3.1.3. Definiowanie schematu i wstępne przygotowanie danych
3.1.4. Wstawianie danych
Zapisywanie danych za pomocą JdbcTemplate
Wstawianie danych za pomocą SimpleJdbcInsert
3.2. Implementacja trwałego magazynu danych za pomocą Spring Data JPA
3.2.1. Dodawanie Spring Data JPA do projektu
3.2.2. Określenie domeny jako encji
3.2.3. Deklarowanie repozytoriów JPA
3.2.4. Dostosowanie do własnych potrzeb repozytoriów JPA
Podsumowanie
Rozdział 4.
Spring Security
4.1. Włączenie obsługi Spring Security
4.2. Konfigurowanie Spring Security
4.2.1. Istniejący w pamięci magazyn danych użytkownika
4.2.2. Magazyn danych użytkownika oparty na JDBC
Nadpisywanie domyślnego użytkownika zapytań
Praca z zaszyfrowanymi hasłami
4.2.3. Magazyn danych użytkownika oparty na LDAP
Konfigurowanie operacji porównywania haseł
Odwołanie do zdalnego serwera LDAP
Konfigurowanie osadzonego serwera LDAP
4.2.4. Dostosowanie uwierzytelniania użytkownika do własnych potrzeb
Definiowanie domeny użytkownika i trwałego magazynu danych
Utworzenie usługi obsługującej szczegółowe informacje o
użytkowniku
Rejestrowanie użytkownika
4.3. Zabezpieczanie żądań internetowych
4.3.1. Zabezpieczanie żądań
4.3.2. Utworzenie własnej strony logowania
4.3.3. Wylogowanie
4.3.4. Ochrona przed atakami typu CSRF
4.4. Poznanie użytkownika
Podsumowanie
Rozdział 5.
Praca
z właściwościami konfiguracyjnymi
5.1. Dostosowanie konfiguracji automatycznej do własnych potrzeb
5.1.1. Poznajemy abstrakcję środowiska Springa
5.1.2. Konfigurowanie źródła danych
5.1.3. Konfigurowanie serwera osadzonego
5.1.4. Konfigurowanie rejestrowania danych
5.1.5. Używanie wartości właściwości specjalnych
5.2. Tworzenie własnych właściwości konfiguracyjnych
5.2.1. Definiowanie komponentów przechowujących właściwości
konfiguracyjne
5.2.2. Deklarowanie metadanych właściwości konfiguracyjnej
Szybkie rozwiązanie problemu dotyczącego brakujących metadanych
5.3. Konfigurowanie za pomocą profili
5.3.1. Definiowanie właściwości dla konkretnego profilu
5.3.2. Aktywowanie profilu
5.3.3. Warunkowe tworzenie komponentu bean z profilami
Podsumowanie
Część II
Zintegrowany Spring
Rozdział 6.
Praca
z właściwościami konfiguracyjnymi
6.1. Utworzenie kontrolerów RESTful
6.1.1. Pobieranie danych z serwera
6.1.2. Przekazywanie danych do serwera
6.1.3. Uaktualnienie danych w serwerze
6.1.4. Usuwanie danych z serwera
6.2. Włączenie obsługi hipermediów
6.2.1. Dodawanie hiperłączy
6.2.2. Utworzenie komponentu asemblera zasobu
6.2.3. Nazewnictwo osadzonych związków
6.3. Włączenie usług back-endu
6.3.1. Dostosowanie nazw ścieżek dostępu zasobów i relacji
6.3.2. Stronicowanie i sortowanie
6.3.3. Dodawanie własnych punktów końcowych
6.3.4. Dodawanie własnych hiperłączy do punktów końcowych
Spring Data
Podsumowanie
Rozdział 7.
Używanie
usług REST
7.1. Używanie punktów końcowych REST za pomocą RestTemplate
7.1.1. Pobieranie zasobu
7.1.2. Przekazywanie do serwera zasobów za pomocą metody
HTTP PUT
7.1.3. Usuwanie zasobu
7.1.4. Przekazywanie do serwera zasobów za pomocą metody
HTTP POST
7.2. Poruszanie się po API REST za pomocą Traverson
Podsumowanie
Rozdział 8.
Asynchroniczne
wysyłanie komunikatów
8.1. Wysyłanie komunikatów za pomocą JMS
8.1.1. Konfigurowanie JMS
8.1.2. Wysyłanie komunikatów za pomocą JmsTemplate
Konwertowanie komunikatu przed jego wysłaniem
Konfigurowanie konwertera komunikatu
Przetwarzanie komunikatu
8.1.3. Otrzymywanie komunikatów JMS
Otrzymywanie komunikatów za pomocą JmsTemplate
Deklarowanie komponentu nasłuchującego
8.2. Praca z RabbitMQ i AMQP
8.2.1. Dodawanie obsługi brokera RabbitMQ do Springa
8.2.2. Wysyłanie komunikatów za pomocą RabbitTemplate
Konfigurowanie konwertera komunikatu
Definiowanie właściwości komunikatu
8.2.3. Pobieranie komunikatu z RabbitMQ
Otrzymywanie komunikatów za pomocą RabbitTemplate
Obsługa komunikatów RabbitMQ za pomocą komponentu
nasłuchującego
8.3. Obsługa komunikatów za pomocą Apache Kafki
8.3.1. Konfigurowanie Springa do obsługi komunikatów Kafki
8.3.2. Wysyłanie komunikatów za pomocą KafkaTemplate
8.3.3. Utworzenie komponentu nasłuchującego Kafki
Podsumowanie
Rozdział 9.
Integracja Springa
9.1. Deklarowanie prostego przepływu integracji
9.1.1. Definiowanie przepływu integracji za pomocą XML-a
9.1.2. Konfigurowanie przepływu integracji za pomocą Javy
9.1.3. Konfigurowanie Spring Integration za pomocą języka
specjalizowanego
9.2. Poznajemy Spring Integration
9.2.1. Kanał komunikatu
9.2.2. Filtr
9.2.3. Przekształcenie
9.2.4. Router
9.2.5. Spliter
9.2.6. Aktywator usługi
9.2.7. Brama
9.2.8. Adapter kanału
9.2.9. Moduł punktu końcowego
9.3. Utworzenie własnego przepływu integracji dotyczącego poczty
elektronicznej
Podsumowanie
Część III
Reaktywny Spring
Rozdział 10.
Wprowadzenie do projektu
Reactor
10.1. Wprowadzenie do programowania reaktywnego
10.1.1. Definiowanie strumienia reaktywnego
10.2. Rozpoczęcie pracy z projektem Reactor
10.2.1. Wykres przepływu reaktywnego
10.2.2. Dodawanie zależności projektu Reactor
10.3. Najczęściej stosowane operacje reaktywne
10.3.1. Tworzenie typu reaktywnego
Tworzenie typu reaktywnego na podstawie obiektu
Tworzenie typu reaktywnego na podstawie kolekcji
Generowanie danych strumienia
10.3.2. Łączenie typów reaktywnych
Połączenie ze sobą typów reaktywnych
Wybór pierwszego typu reaktywnego do publikacji
10.3.3. Przekształcanie i filtrowanie strumienia reaktywnego
Filtrowanie danych pochodzących z typu reaktywnego
Mapowanie danych reaktywnych
Buforowanie danych strumienia reaktywnego
10.3.4. Przeprowadzanie operacji logicznej na typie reaktywnym
Podsumowanie
Rozdział 11.
Tworzenie reaktywnego API
11.1. Praca z frameworkiem WebFlux w Springu
11.1.1. Wprowadzenie do Spring WebFlux
Reaktywny Spring MVC?
11.1.2. Definiowanie kontrolera reaktywnego
Zwrot pojedynczej wartości
Praca z typami RxJava
Reaktywna obsługa danych wejściowych
11.2. Definiowanie funkcyjnych procedur obsługi żądania
11.3. Testowanie kontrolera reaktywnego
11.3.1. Testowanie żądań HTTP GET
11.3.2. Testowanie żądań POST
11.3.3. Testowanie działającego serwera
11.4. Reaktywne używanie API REST
11.4.1. Pobieranie zasobów
Wykonywanie żądań z bazowym adresem URI
Zakończenie długo wykonywanego żądania
11.4.2. Przekazywanie zasobu
11.4.3. Usunięcie zasobu
11.4.4. Obsługa błędów
11.4.5. Wymiana żądań
11.5. Zabezpieczanie API reaktywnego
11.5.1. Konfigurowanie zabezpieczeń reaktywnej aplikacji internetowej
11.5.2. Konfigurowanie reaktywnej usługi
szczegółów związanych z użytkownikiem
Podsumowanie
Rozdział 12.
Reaktywny trwały magazyn
danych
12.1. Reaktywność i Spring Data
12.1.1. Reaktywny Spring Data
12.1.2. Konwersja między typem reaktywnym a niereaktywnym
12.1.3. Opracowanie repozytorium reaktywnego
12.2. Praca z reaktywnymi repozytoriami bazy danych Cassandra
12.2.1. Włączenie obsługi Spring Data Cassandra
12.2.2. Modelowanie danych w bazie danych Cassandra
12.2.3. Mapowanie typów domeny pod kątem przechowywania
informacji w bazie danych Cassandra
12.2.4. Tworzenie reaktywnego repozytorium bazy danych Cassandra
12.3. Tworzenie reaktywnych repozytoriów MongoDB
12.3.1. Dodawanie obsługi Spring Data MongoDB
12.3.2. Mapowanie typu domeny na dokument MongoDB
12.3.3. Tworzenie interfejsów repozytoriów
reaktywnych MongoDB
Podsumowanie
Część IV
Natywna chmura Springa
Rozdział 13.
Odkrywanie usług
13.1. Poznajemy mikrousługi
13.2. Konfiguracja rejestru usług
Naga prawda o usłudze Eureka
Dlaczego używany jest działający po stronie klienta mechanizm
równoważenia obciążenia?
13.2.1. Konfigurowanie Eureki
Określenie numeru portu serwera Eureka
Wyłączenie trybu utrzymania egzemplarza
13.2.2. Skalowanie serwera Eureka
Spring Cloud Services w środowisku produkcyjnym
13.3. Rejestrowanie i odkrywanie usług
13.3.1. Konfigurowanie właściwości klienta Eureki
13.3.2. Używanie usługi
Używanie usługi za pomocą RestTemplate
Używanie usług przez egzemplarz WebClient
Definiowanie interfejsu klienta
Podsumowanie
Rozdział 14.
Zarządzanie konfiguracją
14.1. Konfiguracja współdzielona
14.2. Uruchamianie serwera konfiguracji
14.2.1. Włączanie Config Server
14.2.2. Umieszczanie właściwości w repozytorium konfiguracyjnym
Udostępnianie konfiguracji z podścieżek Gita
Udostępnianie konfiguracji z gałęzi lub etykiety
Uwierzytelnianie do używanego repozytorium Git
14.3. Używanie konfiguracji współdzielonej
14.4. Udostępnienie konfiguracji przeznaczonej dla konkretnej aplikacji
i konkretnego profilu
14.4.1. Udostępnianie właściwości przeznaczonych dla konkretnej
aplikacji
14.4.2. Udostępnianie właściwości z profili
14.5. Utajnienie właściwości konfiguracyjnych
14.5.1. Szyfrowanie właściwości w repozytorium Git
14.5.2. Przechowywanie danych wrażliwych w magazynie Vault
Uruchomienie serwera Vault
Zapisywanie danych wrażliwych w magazynie Vault
Włączenie w Config Server obsługi magazynu Vault
Definiowanie tokena Vaulta w kliencie Config Server
Zapisywanie danych wrażliwych przeznaczonych dla konkretnej aplikacji i
profilu
14.6. Odświeżanie właściwości konfiguracyjnych w locie
14.6.1. Ręczne odświeżanie właściwości konfiguracyjnych
14.6.2. Automatyczne odświeżanie właściwości konfiguracyjnych
Utworzenie zaczepu
Obsługa uaktualnień zaczepu w Config Server
Utworzenie komponentu wyodrębniającego powiadomienie z serwisu Gogs
Włączenie automatycznego odświeżania właściwości w klientach Config
Server
Podsumowanie
Rozdział 15.
Obsługa awarii i
opóźnień
15.1. Wprowadzenie do wzorca bezpiecznika
Kilka słów o nazwie biblioteki Hystrix
15.2. Deklarowanie bezpiecznika
15.2.1. Łagodzenie opóźnienia
15.2.2. Zarządzanie wartością graniczną bezpiecznika
15.3. Monitorowanie awarii
15.3.1. Wprowadzenie do panelu kontrolnego biblioteki Hystrix
15.3.2. Pula wątków biblioteki Hystrix
15.4. Agregowanie wielu strumieni biblioteki Hystrix
Podsumowanie
Część V
Wdrażanie aplikacji Springa
Rozdział 16.
Praca ze Spring Boot
Actuator
16.1. Wprowadzenie do Actuatora
16.1.1. Konfigurowanie bazowej ścieżki dostępu Actuatora
16.1.2. Włączanie i wyłączanie punktów końcowych Actuatora
16.2. Używanie punktów końcowych Actuatora
16.2.1. Pobieranie podstawowych informacji o aplikacji
Informacje o aplikacji
Informacje o stanie aplikacji
16.2.2. Wyświetlanie konfiguracji aplikacji
Pobieranie informacji o komponencie bean
Konfiguracja automatyczna
Analiza właściwości środowiskowych i konfiguracyjnych
Mapowanie żądań HTTP
Zarządzanie poziomami rejestrowania danych
16.2.3. Wyświetlanie informacji o aktywności aplikacji
Monitorowanie aktywności HTTP
Monitorowanie wątków
16.2.4. Dane statystyczne dotyczące środowiska uruchomieniowego
16.3. Dostosowanie Actuatora do własnych potrzeb
16.3.1. Dodawanie informacji dostarczanych później przez
punkt końcowy /info
Utworzenie własnej implementacji InfoContributor
Wstrzykiwanie informacji do punktu końcowego /info
Udostępnianie informacji o operacji przekazania plików do
repozytorium Git
16.3.2. Definiowanie własnych wskaźników informacji o stanie
aplikacji
16.3.3. Rejestrowanie niestandardowych danych statystycznych
16.3.4. Tworzenie własnego punktu końcowego
16.4. Zabezpieczanie Actuatora
Podsumowanie
Rozdział 17.
Administrowanie Springiem
17.1. Używanie Spring Boot Admin
17.1.1. Tworzenie serwera administracyjnego
17.1.2. Rejestrowanie klientów serwera administracyjnego
Wyraźne konfigurowanie aplikacji jako klientów serwera
administracyjnego
Odkrywanie klientów serwera administracyjnego
17.2. Poznajemy serwer administracyjny
17.2.1. Wyświetlanie ogólnych informacji o stanie aplikacji
17.2.2. Obserwowanie kluczowych danych statystycznych
17.2.3. Analiza zmiennych środowiskowych
17.2.4. Wyświetlanie i zmiana poziomu rejestrowania danych
17.2.5. Monitorowanie wątków
17.2.6. Monitorowanie żądań HTTP
17.3. Zabezpieczanie serwera administracyjnego
17.3.1. Włączanie logowania w serwerze administracyjnym
17.3.2. Uwierzytelnianie z użyciem Actuatora
Podsumowanie
Rozdział 18.
Monitorowanie Springa za
pomocą JMX
18.1. Praca z Actuatorem i MBean
18.2. Tworzenie własnego komponentu MBean
18.3. Wysyłanie powiadomień
Podsumowanie
Rozdział 19.
Wdrażanie aplikacji Springa
19.1. Opcje podczas wdrażania aplikacji
19.2. Kompilowanie i wdrażanie pliku WAR
Mikrousługi w serwerze aplikacji?
19.3. Przekazanie pliku JAR do Cloud Foundry
19.4. Umieszczanie aplikacji Spring Boota w kontenerze Dockera
19.5. To nie koniec, ale dopiero początek
Podsumowanie
Dodatki
Dodatek A Tworzenie aplikacji Springa
A.1. Inicjalizacja projektu za pomocą Spring Tool Suite
A.2. Tworzenie projektu za pomocą IntelliJ IDEA
A.3. Tworzenie projektu za pomocą NetBeans
A.4. Inicjalizacja projektu na stronie start.spring.io
A.5. Inicjalizacja projektu z poziomu powłoki
A.5.1. Polecenie curl i API Initializr
A.5.2. Interfejs powłoki dla Spring Boota
A.6. Tworzenie aplikacji Springa za pomocą metaframeworka
A.7. Kompilowanie i uruchamianie projektu
520
stron, Format: 16.5x24.0cm, oprawa miękka