tytuł oryginału: building applications with spring 5 and kotlin · 2020. 8. 26. · instalacja...
TRANSCRIPT
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ść
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
Rozdzia 2. • Pierwsze kroki z platform Spring
49
Poleć książkęKup książkę
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ę
Rozdzia 2. • Pierwsze kroki z platform Spring
51
Poleć książkęKup książkę
J zyk Kotlin na platformie Spring. Programowanie aplikacji internetowych
52
Poleć książkęKup książkę
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ę
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ę
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ę