Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja...

32

Transcript of Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja...

Page 1: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29
Page 2: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Tytuł oryginału: Building Applications with Spring 5 and Kotlin

Tłumaczenie: Andrzej Watrak

ISBN: 978-83-283-5183-7

Copyright © Packt Publishing 2018. First published in the English language under the title ‘Building Applications with Spring 5 and Kotlin – (9781788394802)’

Polish edition copyright © 2019 by Helion SAAll rights reserved.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletnei rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą równieżżadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Helion SAul. Kościuszki 1c, 44-100 Gliwicetel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Dodatkowe materiały do książki można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/jkotsp.zip

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/jkotspMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Spis tre ci

O autorze 7

O recenzencie 8

Przedmowa 9

Rozdzia 1. Przygotowanie 13

Jaka jest Twoja misja? 13Dzielenie kodu na osobne jednostki 14

Opis jednostek 14Planowanie pracy 15Przygotowanie rodowiska roboczego 16

Instalacja narz dzia Git 16Kompilacja kodu ród owego narz dzia Git 18Instalacja pakietu JDK 19Instalacja rodowiska programistycznego 20Pierwsze uruchomienie rodowiska IntelliJ IDEA 21Instalacja platformy Spring 5 23Instalacja programu Postman 28

Utworzenie repozytorium Git 29Podsumowanie 31

Rozdzia 2. Pierwsze kroki z platform Spring 33

Czym jest platforma Spring? 33Jakie funkcjonalno ci oferuje platforma Spring? 34Jak jest obs ugiwany j zyk Kotlin? 38

Tworzenie projektu Spring 38Czym jest narz dzie Spring Initializr? 39Utworzenie projektu 39

Tworzenie projektu w rodowisku IntelliJ IDEA 48Podsumowanie 50

Poleć książkęKup książkę

Page 4: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Spis tre ci

4

Rozdzia 3. Twoja pierwsza us uga Spring REST w j zyku Kotlin 53

Zdefiniowanie zale no ci w projekcie 54Utworzenie klasy kontrolera 55

Co jeszcze mo na uzyska ? 56Utworzenie klasy danych 57Obs uga innych rodzajów zapyta 58Uruchomienie aplikacji 65

cie ki udost pniane przez bibliotek Actuator 71Dodanie komponentu Service 73Podsumowanie 78

Rozdzia 4. Interfejs Spring Data JPA i baza danych MySQL 79

Wprowadzenie do interfejsu Spring Data JPA 79Co oferuje biblioteka Spring Data? 80Jakie modu y Spring Data b d potrzebne? 80Interfejs Spring Data JPA 80

Instalacja bazy MySQL 80Instalacja bazy MySQL w systemie macOS 81Instalacja bazy MySQL w systemie Windows 83Instalacja bazy MySQL w systemie Linux 84Utworzenie schematu bazy danych 86Dodanie nowych zale no ci 88

Implementacja operacji CRUD 89Dodawanie danych 95Modyfikacja danych 95Odczytywanie danych 97Usuwanie danych 98Wi cej o modyfikowaniu danych 98Obiekty DTO 100

Tworzenie zapyta SQL 106Nazwane zapytania SQL 108

Podsumowanie 109

Rozdzia 5. Zabezpieczanie aplikacji za pomoc Spring Security 111

Wprowadzenie do platformy Spring Security 111Definiowanie ról u ytkowników 112

Implementacja klas reprezentuj cych role 112Definiowanie obiektów DTO dla u ytkowników 119Uwierzytelnianie i autoryzowanie u ytkowników 123Co jeszcze oferuje platforma Spring Security? 129Podsumowanie 130

Rozdzia 6. Platforma Spring Cloud 131

Architektura SOA 131Architektura mikrous ugowa 132Mikrous ugi w platformie Spring Cloud 133

Platforma Spring Cloud w praktyce 134Serwer konfiguracji 135

Poleć książkęKup książkę

Page 5: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Spis tre ci

5

Wykrywanie serwerów 137Brama 140Modyfikacja interfejsu API 143

Zabezpieczanie us ug Spring Cloud 148Podsumowanie 158

Rozdzia 7. Projekt Reactor 159

Dlaczego nale y stosowa projekt Reactor? 159Co to jest projekt Reactor? 160Korzystanie z projektu Reactor 160Podsumowanie 168

Rozdzia 8. Praktyki programistyczne 171

Krytyczna ocena praktyk programistycznych 171Wstrzykiwane zale no ci 171Otwarto klas 172Mutowalne zmienne 172Wielow tkowo 172Poprawno danych 173Zakres testów 173Konfiguracja XML 173

Dobre praktyki w tworzeniu kodu 173Nie wstrzykuj zbyt wiele 173Ograniczaj widoczno 173Problem wielow tkowo ci 174Weryfikacja danych 174

Podsumowanie 175

Rozdzia 9. Testy 177

Dlaczego testy s tak wa ne w programowaniu? 177Co trzeba testowa ? 178Najcz ciej stosowane praktyki i metodyki testowania 178

Przygotowanie projektu 179Pierwszy test w j zyku Kotlin 183Uruchamianie testów w rodowisku IntelliJ IDEA 189Testowanie aplikacji Spring REST 191Uruchamianie zestawu testów 198Podsumowanie 199

Rozdzia 10. Wdra anie aplikacji 201

Co b dziemy wdra a ? 201Opcje wdro eniowe 208

Wdro enie aplikacji na serwerze Tomcat 208Wdro enie aplikacji na serwerze Java EE 210

Wdro enie aplikacji w chmurze AWS 214Podsumowanie 233

Skorowidz 349

Poleć książkęKup książkę

Page 6: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Spis tre ci

6

Poleć książkęKup książkę

Page 7: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

2

Pierwsze krokiz platform Spring

W poprzednim rozdziale skonfigurowa e rodowisko programistyczne. Teraz jeste gotów doutworzenia swojego pierwszego projektu w j zyku Kotlin opartego na platformie Spring. Zanimto jednak zrobisz, musisz pozna podstawy tej platformy i dowiedzie si , co mo na za jej pomocuzyska . Wtedy b dziesz móg wystartowa z projektem. Przygotuj si !

W tym rozdziale opisane s nast puj ce zagadnienia: czym jest platforma Spring, najwa niejsze funkcjonalno ci platformy Spring, obs uga j zyka Kotlin w platformie Spring, generowanie projektów, tworzenie projektu w rodowisku IntelliJ IDEA.

Czym jest platforma Spring?Spring jest platform programistyczn opracowan przez firm Pivotal. Platforma oferujefunkcjonalno ci do tworzenia interfejsu u ytkownika i modeli konfiguracyjnych nowoczesnychaplikacji. Dzi ki tym funkcjonalno ciom programi ci mog skupi si na implementowaniualgorytmu aplikacji. Dzisiaj niemal wszystkie nowoczesne aplikacje tworzy si przy u yciuplatformy Spring. Jest to jedna z najcz ciej stosowanych i najpopularniejszych platformprogramistycznych.

Poleć książkęKup książkę

Page 8: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

J zyk Kotlin na platformie Spring. Programowanie aplikacji internetowych

34

Jakie funkcjonalno ci oferuje platforma Spring?Platforma Spring jest wyposa ona w mnóstwo nowoczesnych funkcjonalno ci niezb dnychka demu programi cie. W tej cz ci rozdzia u opisanych zosta o kilka najwa niejszych.

Wstrzykiwanie zale no ciPierwsza funkcjonalno , o której nale y wspomnie i która jest wykorzystywana w codziennymprogramowaniu, to wstrzykiwanie zale no ci (ang. dependency injection). Ka dy dobry pro-gramista stara si tworzy klasy jak najbardziej uniezale nione od siebie. S to tzw. klasy lu nosprz one, czyli „nie wiadome” istnienia innych klas. Wstrzykiwanie zale no ci s u y wi zaniuklas ze sob z zachowaniem niezale no ci.

Jak to si dzieje?

Wstrzykiwanie zale no ci to technika nowoczesnego programowania polegaj ca na udo-st pnianiu obiektu A obiektowi B. Zale no ci jest obiekt A, natomiast obiekt B wykorzy-stuje wstrzykni t zale no . Dobrym przyk adem jest udost pnianie zale no ci w testachjednostkowych.

Zale no najcz ciej definiujemy, tworz c instancj zale no ci lub obiekt fabrykuj cy generu-j cy instancj . Dzi ki wstrzykiwaniu zale no ci instancja jest przekazywana zewn trznemuklientowi. Sposób wykorzystania instancji to problem zewn trznego kodu, a nie Twojego!Co to jest ów zewn trzny kod? Jest nim na przyk ad:

obiekt znajduj cy si wy ej w hierarchii zale no ci, wstrzykiwarka zale no ci (platforma) generuj ca graf zale no ci.

Poni ej znajduje si kilka przyk adów wstrzykiwania zale no ci. Wykorzystane s w nich kon-struktor i obiekt fabrykuj cy. W obu przypadkach rzecz si komplikuje, je eli trzeba dok adnieprzetestowa kod. Jednak dzi ki platformie Spring jest to bardzo atwe! W tej ksi ce dowiesz si ,jak to si robi.

Wstrzykiwanie zale no ci za pomoc konstruktora wygl da nast puj co:

class MyExampleClass(val parameter: Any){ private val dependency: Any init { dependency = parameter // Kod wykorzystuj cy zale no . }}

Wstrzykiwanie zale no ci za pomoc obiektu fabrykuj cego wygl da nast puj co:

class MyExampleClass2 { private val dependency = Factory().create()}class Factory { fun create(): Any {

Poleć książkęKup książkę

Page 9: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Rozdzia 2. • Pierwsze kroki z platform Spring

35

// Kod tworz cy instancj zale no ci. return Any() }}

Jak wspomnia em, dobrym przyk adem wstrzykiwania zale no ci s testy kodu. Dzi ki zale no-ciom testowanie jest o wiele prostsze! Jaki problem pojawia si w powy szych dwóch przyk a-

dach? Za ó my, e chcemy przetestowa klas MyExampleClass2. Potrzebna jest jej imitacja(ang. mock) lub atrapa (ang. stub). Spraw dodatkowo komplikuje to, e nie mamy wp ywuna klas Factory! Prostszym sposobem by oby wstrzykiwanie konstruktora, ale nie rozwi za obyto problemu. Dlaczego? Wzajemne uzale nianie tworzonych obiektów jest w praktyce niedo przyj cia. Tego problemu nie ma w przypadku wstrzykiwania zale no ci za pomoc setterów.Wkrótce przekonasz si jednak, e takie podej cie ma wi cej wad ni zalet.

Odwrócenie sterowaniaNajwa niejsz technik lu nego sprz gania klas jest odwrócenie sterowania (ang. Inversion ofControl — IoC). Polega ono na udost pnianiu zale no ci przez obiekt podrz dny zamiast two-rzenia lub szukania obiektów zale nych. Sprz ganie obiektów nast puje w trakcie dzia aniakodu. Celem zarówno odwrócenia sterowania, jak i wstrzykiwania zale no ci jest redukowanieliczby zale no ci w kodzie.

Przeanalizujmy kilka przyk adów ilustruj cych powy sz technik . Wyobra sobie, e tworzyszaplikacj do odtwarzania muzyki i potrzebny jest mechanizm do sterowania g o no ci . Pocz t-kowy kod wygl da nast puj co:

class VolumeControlclass MusicPlayer { val volumeControl = VolumeControl()}

Teraz zastosujmy odwrócenie sterowania:

abstract class VolumeControlAbstractclass MusicPlayerIOC( private val volumeControl: VolumeControlAbstract)

W pierwszym kodzie tworzona jest instancja klasy:

val volumeControl = VolumeControl()

Zatem klasa MusicPlayer jest bezpo rednio uzale niona od klasy VolumeControl!

Jak to wygl da w drugim kodzie? Tworzona jest w nim klasa abstrakcyjna. W sygnaturzekonstruktora klasy MusicPlayer zdefiniowana jest klasa zale na VolumeControl. Nie jest jednaktworzona jej instancja. Zale no jest tworzona, a nast pnie przekazywana klasie MusicPlayerw nast puj cy sposób:

// Zainicjowanie zale no ci.val vc = VolumeControlImpl()

Poleć książkęKup książkę

Page 10: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

J zyk Kotlin na platformie Spring. Programowanie aplikacji internetowych

36

// Przekazanie zale no ci.val player = MusicPlayerIOC(vc)

W tym przypadku kod kliencki tworz cy instancj klasy MusicPlayer ma kontrol nad implementa-cj klasy VolumeControl. Jak wida , zale no jest wstrzykiwana w sygnaturze klasy MusicPlayer!

Programowanie aspektowePlatforma Spring oferuje jeszcze jedn wa n funkcjonalno : programowanie aspektowe(ang. aspect oriented programming — AOP). Programowanie aspektowe stosuje si do tworzeniaobiektowych interfejsów API. Jest to nowy styl tworzenia struktury kodu. W programowaniuobiektowym podstawow jednostk jest klasa. Natomiast w programowaniu AOP jest to aspekt.Wstrzykiwanie zale no ci ma na celu rozprz ganie obiektów tworz cych aplikacj . Natomiastprogramowanie AOP pozwala rozdziela zagadnienia przekrojowe (ang. cross-cutting concerns)od obiektów, których te zagadnienia dotycz . Zagadnienie przekrojowe jest to funkcjonalnowp ywaj ca na wiele obszarów aplikacji. Dobrym przyk adem jest zabezpieczanie kodu. Dlaczego?Poniewa w wielu metodach mo e by wymagane zaimplementowane regu bezpiecze stwa.

W programowaniu aspektowym ka dy modu implementuje aspekty. W nast pnych rozdzia achzastosujesz ten styl programowania w praktyce.

KontenerWa n cech platformy Spring jest mo liwo tworzenia obiektów aplikacyjnych i zarz dzaniaich cyklem ycia oraz konfiguracj . Do tego celu s u y interfejs org.springframework.context.ApplicationContext, który jest odpowiedzialny za tworzenie instancji klas, ich konfiguro-

wanie i kompletowanie. Platforma Spring oferuje kilka gotowych implementacji interfejsuApplicationContext.

Wzorzec MVCPlatforma Spring pozwala tworzy aplikacje zgodnie ze wzorcem MVC (ang. Model-View--Controller — model-widok-kontroler). Co to oznacza? We wzorcu MVC równie stosuje siinterfejsy i ró ne technologie tworzenia widoków. Wzorzec ten wykorzystuje si do pisaniainterfejsów u ytkownika. Dzi ki niemu powsta y kod jest prosty i czytelny. Zgodnie z tymwzorcem kod aplikacji dzieli si na trzy cz ci: model, widok i kontroler.

ModelModel to centralna cz aplikacji odpowiedzialna za jej dzia anie. Jest niezale ny od widokui ma bezpo redni wp yw na dane, algorytm i stosowane zasady.

WidokWidok s u y do prezentowania informacji przetwarzanych przez aplikacj . Przyk adem widokujest strona HTML tworzona po wys aniu zapytania do interfejsu API. Aplikacja nie musi miejednego widoku. We wzorcu MVC mo na prezentowa t sam informacj w wielu widokach.

Poleć książkęKup książkę

Page 11: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Rozdzia 2. • Pierwsze kroki z platform Spring

37

KontrolerKontroler odbiera dane wej ciowe i przetwarza je na polecenia dla modelu lub widoku. Jak wida ,jest to kolejny przyk ad rozprz gania klas w platformie Spring!

Zarz dzanie transakcjamiPlatforma Spring oferuje ogóln warstw abstrakcyjn do zarz dzania transakcjami. Zarz dzanieto obejmuje nie tylko rodowisko J2EE. W odró nieniu od mechanizmu EJB CMT, powi za-nego z interfejsem JTA, deklaratywne zarz dzanie transakcjami w platformie Spring mo nastosowa w ka dym rodowisku. Zarz dza mo na transakcjami JTA, jak równie transakcjamilokalnymi, je eli zajdzie taka potrzeba, przy u yciu nast puj cych technik:

JDBC, JPA, Hibernate, JDO.

Wystarczy jedynie odpowiednio zmieni pliki konfiguracyjne!

Inne funkcjonalno ciWyj tki w warstwie abstrakcji JDBC w platformie Spring tworz hierarchiczn struktur ,dzi ki której kodowanie obs ugi b dów jest atwiejsze.

Platforma Spring umo liwia tworzenie komercyjnych aplikacji za pomoc obiektów POJO(ang. Plain Old Java Object — zwyk y, stary obiekt Java). Co to oznacza? e nie jest potrzebnykontener EJB, na przyk ad serwer aplikacji. Programista mo e u y nawet podstawowego kon-tenera serwletów, na przyk ad Tomcata lub innego komercyjnego produktu. Jednym z mo liwychrozwi za jest wykorzystanie rodowiska AWS.

Warto zaznaczy , e platforma Spring ma modu ow budow . Oznacza to, e w aplikacji mo nawykorzystywa jedynie niezb dne pakiety, a inne pomin .

Razem z platform mo na stosowa inne popularne technologie, na przyk ad platform ORM,platformy loguj ce, rodowisko JEE, czasomierze Quartz i JDK.

Jak wygl da testowanie aplikacji? Dzi ki platformie Spring testy przeprowadza si szybko i a-two. Kod uzale niony od otaczaj cego go rodowiska przenosi si do platformy. Za pomocobiektów POJO mo na atwo wstrzykiwa zale no ci i dane potrzebne do wykonania testów.

Platforma Spring oferuje doskona y interfejs API do przekszta cania wyj tków charakterystycz-nych dla ró nych technologii na spójne wyj tki niekontrolowane.

Kontenery IoC w platformie Spring s bardzo ma e. Pod tym wzgl dem znacznie ró ni siod kontenerów EJB i w mniejszym stopniu obci aj pami i procesor komputera.

Poleć książkęKup książkę

Page 12: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

J zyk Kotlin na platformie Spring. Programowanie aplikacji internetowych

38

To s najpopularniejsze funkcjonalno ci platformy Spring. Wykorzystasz je podczas pracy z tksi k . Spotkasz si równie z innymi funkcjonalno ciami, które nie zosta y tu wymienione.Gdy dog bnie poznasz platform Spring, na pewno przez d ugi, bardzo d ugi czas, a by mo eju nigdy, nie skorzystasz z innych platform!

Jak jest obs ugiwany j zyk Kotlin?Pocz wszy od wersji 5 platforma Spring oficjalnie obs uguje j zyk Kotlin. To wietna wiadomo !Jedn z najwi kszych zalet Kotlina jest jego doskona a kompatybilno z bibliotekami j zykaJava. Ale to nie wszystko! Tworz c aplikacje przy u yciu platformy Spring, mo na w pe ni ko-rzysta z zalet sk adni j zyka Kotlin. Dzi ki temu osi ga si zupe nie inny poziom wydajno cii elastyczno ci kodu! Dlatego pocz wszy od wersji 5 platformy Spring j zyk Kotlin jest oficjalnieobs ugiwany.

Podstawow funkcjonalno ci j zyka Kotlin, umo liwiaj c stosowanie go razem z platformSpring, s rozszerzenia. Dzi ki nim mo na rozbudowywa istniej ce klasy platformy, co wpro-wadza najnowsz wersj platformy w zupe nie nowy wymiar!

Nale y podkre li , e rozszerzenia w j zyku Kotlin s rozwi zywane statycznie. Oznacza to, etrzeba je importowa .

Poni ej wymienione s najwa niejsze korzy ci p yn ce ze stosowania platformy Spring i j zykaKotlin:

Platforma Spring mo e wykorzystywa charakterystyczne dla j zyka Kotlinzabezpieczenia przed zerowymi wska nikami.

Do kierowania zapyta mo na wykorzystywa j zyk DSL. Dzi ki urzeczowionym parametrom typowanym mo na unikn problemów

wynikaj cych z wymazywania typów w maszynie JVM. Narz dzie Gradle mo na konfigurowa w j zyku Kotlin. Mo na stosowa szablony skryptów w j zyku Kotlin. Stosuj c platform Spring z j zykiem Kotlin, mo na tworzy krótszy, prostszy,

bardziej efektywny i czytelny kod.

J zyk Kotlin to przysz o ciowe rozwi zanie dla wszystkich programistów korzystaj cych z plat-formy Spring!

Tworzenie projektu SpringPrzyszed czas na utworzenie i uruchomienie pierwszego projektu opartego na platformieSpring. Twoim podstawowym j zykiem programowania b dzie oczywi cie Kotlin. Do zaini-cjowania projektu wykorzystasz narz dzie Spring Initializr.

Poleć książkęKup książkę

Page 13: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Rozdzia 2. • Pierwsze kroki z platform Spring

39

Czym jest narz dzie Spring Initializr?W skrócie: Spring Initializr jest internetowym generatorem projektów opartych na platformieSpring. Narz dzie to jest dost pne pod adresem https://start.spring.io. Poniewa jest to otwartyprojekt, jego kod znajduje si w repozytorium GitHub pod adresem https://github.com/spring-io/initializr.

Spring Initializr to narz dzie udost pniaj ce interfejs API do szybkiego generowania projektówopartych na platformie Spring. Mo esz u y jego domy lnej instancji o podanym wy ej adresielub sklonowa jego repozytorium w serwisie GitHub i utworzy w asn instancj .

Narz dzie Spring Initializr ma kilka opcji konfiguracyjnych, za pomoc których definiuje siró ne aspekty tworzonego projektu, mi dzy innymi:

list zale no ci, wersj j zyka Java, wersj j zyka Kotlin, wersj platformy Spring Boot.

Utworzenie projektuOtwórz stron narz dzia Spring Initializr: https://start.spring.io. Pojawi si kreator projektów, jakna poni szym rysunku:

Poleć książkęKup książkę

Page 14: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

J zyk Kotlin na platformie Spring. Programowanie aplikacji internetowych

40

Wybierz nast puj ce ustawienia projektu: Wybierz Generate a Gradle Project with Kotlin and Spring Boot 2.0.6

(wygeneruj projekt Gradle z j zykiem Kotlin i platform Spring Boot 2.0.6). W polu Group wpisz com.journaler. W polu Artifact wpisz api.

Poni ej przedstawiony jest widok ustawie :

Pierwsza konfiguracja b dzie prosta, ale pó niej w miar swoich post pów b dziesz j rozszerzao dodatkowe zale no ci.

Kliknij przycisk Generate Project (wygeneruj projekt). Pojawi si okno, jak na poni szym rysunku,z pytaniem o folder, w którym ma by zapisany plik z projektem:

Poleć książkęKup książkę

Page 15: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Rozdzia 2. • Pierwsze kroki z platform Spring

41

Zapisz plik api.zip w preferowanym folderze, a nast pnie rozpakuj go. Poni szy rysunek przed-stawia zawarto projektu:

Jest to standardowy projekt aplikacji w j zyku Kotlin. Przyjrzyjmy si dok adniej jego najwa -niejszym cz ciom. Otwórz plik konfiguracyjny build.gradle. Jego zawarto powinna by po-dobna do tej ni ej przedstawionej:

buildscript { ext { kotlinVersion = '1.2.51' springBootVersion = '2.0.6.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:$ {springBootVersion}") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}") classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}") }}

apply plugin: 'kotlin'apply plugin: 'kotlin-spring'apply plugin: 'eclipse'apply plugin: 'org.springframework.boot'apply plugin: 'io.spring.dependency-management'

Poleć książkęKup książkę

Page 16: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

J zyk Kotlin na platformie Spring. Programowanie aplikacji internetowych

42

group = 'com.journaler'version = '0.0.1-SNAPSHOT'sourceCompatibility = 1.8compileKotlin { kotlinOptions { freeCompilerArgs = ["-Xjsr305=strict"] jvmTarget = "1.8" }}compileTestKotlin { kotlinOptions { freeCompilerArgs = ["-Xjsr305=strict"] jvmTarget = "1.8" }}

repositories { mavenCentral()}

dependencies { implementation('org.springframework.boot:spring-boot-starter') implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") implementation("org.jetbrains.kotlin:kotlin-reflect") testImplementation('org.springframework.boot:spring-boot-starter-test')}

Kolejne sekcje skryptu, pocz wszy od samego pocz tku, zawieraj nast puj ce ustawienia: oznaczenia wersji j zyka Kotlin i platformy Spring Boot, nazwy i cie ki repozytoriów niezb dnych do skompilowania kodu, wtyczki niezb dne do skompilowania i uruchomienia kodu, nazw grupy projektu (com.journaler), oznaczenie wersji projektu (0.0.1-SNAPSHOT), wymóg kompatybilno ci z wersj j zyka Java 1.8, nazwy wykorzystywanych repozytoriów, zale no ci wykorzystywane przez j zyk Kotlin i platform Spring.

Inn wa n kwesti jest konfiguracja narz dzia Git. Otwórz plik .gitignore, zawieraj cy ustawie-nia wy czaj ce niepotrzebn kontrol wersji w przypadku niektórych plików, i przyjrzyj sijego zawarto ci:

.gradle/build/!gradle/wrapper/gradle-wrapper.jar

### STS ###.apt_generated.classpath.factorypath

Poleć książkęKup książkę

Page 17: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Rozdzia 2. • Pierwsze kroki z platform Spring

43

.project

.settings

.springBeans

.sts4-cache

### IntelliJ IDEA ###.idea*.iws*.iml*.ipr/out/

### NetBeans ###/nbproject/private//nbbuild//dist//nbdist//.nb-gradle/

Otwórz plik application.propeties, który znajduje si w folderze src\main.resources. Plik tenzawiera ustawienia aplikacji specyficzne dla wykorzystywanego rodowiska. W tej chwili jeston pusty.

I wreszcie: przejrzyj kod! Projekt zosta utworzony w j zyku Kotlin, wi c przejd do folderusrc\main\kotlin\com\journaler\api i otwórz plik ApiApplication.kt:

package com.journaler.api

import org.springframework.boot.autoconfigure.SpringBootApplicationimport org.springframework.boot.runApplication

@SpringBootApplicationclass ApiApplication

fun main(args: Array<String>) { runApplication<ApiApplication>(*args)}

Kod nie jest d ugi, wi c atwo go zrozumie . Zdefiniowana jest w nim klasa aplikacyjnaApiApplication opatrzona adnotacj @SpringBootApplication. Metoda main() uruchamia aplika-cj wykorzystuj c platform Spring. To wszystko!

Zanim skompilujesz i uruchomisz kod, musisz sprawdzi jedn rzecz. Przejd do folderusrc\test\kotlin\com\journaler\api i otwórz plik ApiApplicationTest.kt, który zawiera nast -puj cy test:

package com.journaler.api

import org.junit.Testimport org.junit.runner.RunWithimport org.springframework.boot.test.context.SpringBootTestimport org.springframework.test.context.junit4.SpringRunner

Poleć książkęKup książkę

Page 18: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

J zyk Kotlin na platformie Spring. Programowanie aplikacji internetowych

44

@RunWith(SpringRunner::class)@SpringBootTestclass ApiApplicationTests {

@Test fun contextLoads() { }

}

Powy szy test nie robi nic. Wi cej informacji o testowaniu aplikacji opartych na platformieSpring znajdziesz w nast pnych rozdzia ach ksi ki. Na razie ogólnie zapoznaj si z kodem testu.

Teraz skompiluj i uruchom aplikacj . W tym celu otwórz wiersz polece , przejd do g ównegofolderu projektu i wpisz nast puj ce polecenie:

C:\Users\Administrator\Documents\Projekty\api\api>gradlew clean

Narz dzie Gradle pobierze wymagane zale no ci:

Powy szy komunikat oznacza, e zale no ci zosta y pomy lnie pobrane. Aby skompilowa kod,wpisz nast puj ce polecenie:

C:\Users\Administrator\Documents\Projekty\api\api>gradlew build

Je eli kompilacja zako czy si pomy lnie, pojawi si taki komunikat:

Aby uruchomi aplikacj , przejd do folderu build/libs i wpisz polecenie:

C:\Users\Administrator\Documents\Projekty\api\api\build\libs>java -jar ./api-0.0.1-SNAPSHOT

Poleć książkęKup książkę

Page 19: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Rozdzia 2. • Pierwsze kroki z platform Spring

45

Aplikacja wy wietli nast puj c tre :

Na razie nie b dziemy szczegó owo analizowa wy wietlanych komunikatów, poniewa musisznajpierw przej d ug drog do wys ania pierwszego zapytania.

Ostatnim zadaniem b dzie utworzenie projektu od podstaw w rodowisku IntelliJ IDEA.Wcze niej jednak zaimportuj pobrany projekt. W tym celu otwórz rodowisko i kliknij opcjImport Project. Nast pnie wska folder z rozpakowanymi plikami i kliknij przycisk OK. Pojawisi okno kreatora projektu. Zaznacz opcj Create project from existing sources (utwórz projekt napodstawie istniej cych róde ), jak na poni szym rysunku:

Poleć książkęKup książkę

Page 20: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

J zyk Kotlin na platformie Spring. Programowanie aplikacji internetowych

46

Kliknij przycisk Next. Pojawi si kolejne okno z polem Project name zawieraj cym nazwprojektu:

Je eli nazwy projektu i folderu Ci odpowiadaj , kliknij przycisk Next. W nast pnym oknie kliknijprzycisk Mark All (zaznacz wszystko):

W ostatnim oknie kliknij przycisk Finish:

Poleć książkęKup książkę

Page 21: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Rozdzia 2. • Pierwsze kroki z platform Spring

47

Nast pnie kliknij polecenie menu File/New/Module from Existing Sources (plik/nowy/moduz istniej cych róde ) i zaimportuj modu Gradle. W oknie z ustawieniami importu kliknijprzycisk OK:

Import modu u zajmie chwil . Rysunek na nast pnej stronie przedstawia struktur projektu aplika-cji gotowej do uruchomienia:

Poleć książkęKup książkę

Page 22: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

J zyk Kotlin na platformie Spring. Programowanie aplikacji internetowych

48

Je eli rodowisko programistyczne nie rozpozna automatycznie konfiguracji projektu, rozwi sekcjapi/src/main/kotlin/com.journaler.api, kliknij prawym przyciskiem myszy plik ApiApplication.kti wybierz polecenie Run 'com.journaler.api.ApiApplication.kt'. Aplikacja powinna wy wietli takiesame komunikaty jak plik JAR, który uruchomi e wcze niej.

W pliku .gitignore wpisz poni sze wiersze (których narz dzie Spring Initializr nie utworzy o)wy czaj ce kontrol wersji w przypadku plików narz dzia Gradle:

gradlewgradlew.batgradle/*

Tworzenie projektu w rodowiskuIntelliJ IDEANa zako czenie rozdzia u dowiesz si , jak inicjuje si projekty w rodowisku IntelliJ IDEA.Efekt b dzie taki sam jak ten uzyskany za pomoc narz dzia Spring Initializr. Uruchom rodowi-sko IntelliJ IDEA i kliknij opcj Create New Project (utwórz nowy projekt). Pojawi si oknoNew Project (zobacz pierwszy rysunek na nast pnej stronie).

Kliknij sekcj Spring i zaznacz opcje jak na drugim rysunku na nast pnej stronie.

Poleć książkęKup książkę

Page 23: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Rozdzia 2. • Pierwsze kroki z platform Spring

49

Poleć książkęKup książkę

Page 24: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

J zyk Kotlin na platformie Spring. Programowanie aplikacji internetowych

50

Ponadto zaznacz opcj Kotlin/JVM, jak ni ej:

Kliknij przycisk Next i doko cz tworzenie projektu zgodnie ze wskazówkami kreatora. Nast pniekliknij polecenie menu File/Settings. W oknie, które si pojawi, rozwi po lewej stronie sekcjBuild, Execution, Deployment/Compiler/Annotation Processing (kompilacja, uruchomienie,wdro enie/kompilator/przetwarzanie adnotacji) i zaznacz opcj Enable annotation processing(w cz przetwarzanie adnotacji) — zobacz rysunek na nast pnej stronie.

Jak wida na rysunku na nast pnej stronie, w rodowisku brak jest ustawie platformy Spring.Dlatego b dziesz tworzy projekty przy u yciu narz dzia Spring Initializr — zawiera onowszystkie niezb dne opcje.

PodsumowanieTen rozdzia by wprowadzeniem do platformy Spring i jej funkcjonalno ci. Utworzy e swójpierwszy projekt, pomy lnie go skompilowa e i uruchomi e . W nast pnym rozdziale b dzieszkontynuowa rozpocz t podró i zajmiesz si bardziej konkretnymi zadaniami: utworzyszswoj pierwsz us ug REST, która b dzie si sk ada z kontrolera, klasy danych i komponentówus ugowych.

Poleć książkęKup książkę

Page 25: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Rozdzia 2. • Pierwsze kroki z platform Spring

51

Poleć książkęKup książkę

Page 26: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

J zyk Kotlin na platformie Spring. Programowanie aplikacji internetowych

52

Poleć książkęKup książkę

Page 27: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Skorowidz

Aadnotacja

@Component, 73@Controller, 74@Repository, 74@RunWith, 191@Service, 74

AOP, aspect oriented programming, 36API, application programming interface, 14

modyfikacja interfejsu, 143architektura

mikrous ugowa, 132SOA, 131

autoryzowanie u ytkowników, 123AWS, Amazon Web Services, 214

Bbaza danych MySQL, 79bezpiecze stwo, 111biblioteka

Actuator, 71Spring Data, 80

brama, 134, 140

Cchmura AWS, 214Created on, 15CRUD, create, read, update, delete, 14, 89

DDAO, Data Access Object, 74definiowanie obiektów DTO, 119dobre praktyki, 173dodanie

danych, 95komponentu Service, 73zale no ci, 88

DTO, data transfer objects, 100, 119dzielenie kodu, 14

EEmail, 15Enabled, 15

FFirst, 15funkcjonalno ci, 34

IID, 15identyfikator UUID, 15implementacja

klas reprezentuj cych role, 112operacji CRUD, 89

informacjeo ostatnich zapytaniach HTTP, 71o stanie aplikacji, 71o rodowisku, 71

Poleć książkęKup książkę

Page 28: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Skorowidz

236

instalacjabazy MySQL, 80–84narz dzia Git, 17pakietu JDK, 19platformy Spring 5, 24pliku TAR, 85programu Postman, 29rodowiska programistycznego, 21

IntelliJ IDEA, 21tworzenie projektu, 48uruchamianie testów, 189

interfejsAPI, 14, 143REST API, 160Spring Data JPA, 79, 80UserDetails, 113

IoC, Inversion of Control, 35

Jjednostki, 15j zyk Kotlin, 38JPA, Java Persistence API, 79

Kklasa

danych, 57kontrolera, 55

kodimplementuj cy operacje, 78obs uguj cy zapytania, 78

kompilacja kodu ród owego, 18komponent Service, 73konfiguracja

narz dzia Gradle, 28narz dzia Maven, 28XML, 173

kontener, 36kontroler, 37

LLast name, 15Location, 15

MMessage, 15metoda

getAuthorities(), 113getPassword(), 113

getUsername(), 113isAccountNonExpired(), 114isAccountNonLocked(), 114isCredentialsNonExpired(), 113isEnabled(), 113

metodyki testowania, 178mikrous ugi, 132model, 36modu y Spring Data, 80modyfikacja

danych, 95interfejsu API, 143

mutowalne zmienne, 172MVC, Model-View- -Controller, 36MySQL, 80

instalacja bazy, 81–84

Nnarz dzie

Git, 17, 18Gradle, 28Maven, 28Spring Initializr, 39

Note, 15

Oobiekty DTO, 100, 119odczytywanie danych, 97odwrócenie sterowania, 35opcje wdro eniowe, 208operacje CRUD, 14, 89

Ppakiet JDK, 19Password, 15pierwsza us uga, 53planowanie pracy, 16platforma

Spring, 33Spring 5, 24Spring Cloud, 131Spring Security, 111

pliki, 180POJO, Plain Old Java Object, 37poprawno danych, 173praktyki programistyczne, 171problem wielow tkowo ci, 174

Poleć książkęKup książkę

Page 29: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Skorowidz

237

program Postman, 29programowanie aspektowe, 36projekt Reactor, 159

RReactor, 159

komponenty, 160stosowanie, 159

repozytorium Git, 30role u ytkowników, 112Roles, 15

Sschemat bazy danych, 86serwer

Java EE, 210konfiguracji, 134, 135Tomcat, 208wykrywania us ug, 134

SOA, service-oriented architecture, 131Spring, 33

Cloud, 131mikrous ugi, 133zabezpieczanie us ug, 148

Initializr, 39Security, 111, 129

rodowiskoprogramistyczne IntelliJ IDEA, 21robocze, 16

Ttestowanie, 173, 177

aplikacji Spring REST, 191w IntelliJ IDEA, 189w j zyku Kotlin, 183

Title, 15TODO, 15transakcje, 37tworzenie

klasy danych, 57klasy kontrolera, 55projektu, 38projektu w rodowisku IntelliJ IDEA, 48repozytorium Git, 30

schematu bazy danych, 86zapyta SQL, 106

UUpdated on, 15uruchamianie

aplikacji, 65testów, 189zestawu testów, 198

User, 15us ugi Spring Cloud, 148usuwanie danych, 98UUID, Universally Unique IDentifier, 15uwierzytelnianie u ytkowników, 123

Wwalidator, 174wdra anie aplikacji, 201

na serwerze Java EE, 210na serwerze Tomcat, 208opcje wdro eniowe, 208w chmurze AWS, 214

weryfikacja danych, 174widoczno , 173widok, 36wielow tkowo , 172, 174wska niki, 71wstrzykiwanie zale no ci, 34, 171wykrywanie serwerów, 137wzorzec MVC, 36

XXML, 173

Zzabezpieczanie

aplikacji, 111us ug Spring Cloud, 148

zakres testów, 173zale no ci, 54, 88zapytania, 58, 78

nazwane SQL, 106, 108zarz dzanie transakcjami, 37zestaw testów, 198zmienne mutowalne, 172

Poleć książkęKup książkę

Page 30: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29

Notatki

238

Poleć książkęKup książkę

Page 32: Tytuł oryginału: Building Applications with Spring 5 and Kotlin · 2020. 8. 26. · Instalacja platformy Spring 5 23 Instalacja programu Postman 28 Utworzenie repozytorium Git 29