(Ebook PDF) Full Stack Development With JHipster: Build Modern Web Applications and Microservices With Spring and Angularpdf Download
(Ebook PDF) Full Stack Development With JHipster: Build Modern Web Applications and Microservices With Spring and Angularpdf Download
(eBook PDF) Django for APIs: Build web APIs with Python
and Django
http://ebooksecure.com/product/ebook-pdf-django-for-apis-build-
web-apis-with-python-and-django/
http://ebooksecure.com/product/ebook-pdf-web-development-and-
design-foundations-with-html-7th/
http://ebooksecure.com/product/ebook-pdf-web-development-and-
design-foundations-with-html5-8th-edition/
http://ebooksecure.com/product/ebook-pdf-web-development-and-
design-foundations-with-html5-9th-edition-by-terry-felke-morris/
(eBook PDF) Parametric Modeling with Autodesk Fusion
360 (Spring 2019 Edition)
http://ebooksecure.com/product/ebook-pdf-parametric-modeling-
with-autodesk-fusion-360-spring-2019-edition/
https://ebooksecure.com/download/handbook-of-modern-coating-
technologies-applications-and-development-ebook-pdf/
(eBook PDF) Responsive Web Design with HTML 5 & CSS 9th
Edition
http://ebooksecure.com/product/ebook-pdf-responsive-web-design-
with-html-5-css-9th-edition/
http://ebooksecure.com/product/original-pdf-physics-for-
scientists-and-engineers-with-modern-physics-10th-edition/
http://ebooksecure.com/product/ebook-pdf-full-range-leadership-
development-2nd-edition/
About the reviewers
Julien Dubois is the creator and lead developer of JHipster. He has more than 20 years of
experience as a software developer, mainly in Java and Web technologies. He has a strong
knowledge of the Spring Framework, having coauthored a best-selling book on the subject,
and has managed SpringSourcebs France subsidiary.
Today, Julien works as the Chief Innovation Officer at Ippon Technologies, an IT consulting
company that has delivered many JHipster-based applications to its clients worldwide.
I would like to thank my wife, Auralie, and our children, Gabrielle, Adrien, and Alice, for
their patience during the reviewing of this book and the development of JHipster.
Antonio Goncalves is a senior Java developer expert on distributed systems. Despite being
a consultant, he loves to build bonds with the community, so he created the Paris Java User
Group and Devoxx France. As a JCP expert member on various JSRs, Antonio uses this
expertise to write books on Java EE and to talk at international conferences. For his
expertise and all of his work for the Java community, Antonio has been elected Java
Champion. Follow him on Twitter at !BHPODBM.
Spring Boot 30
Spring Security 30
Spring MVC 31
Spring data 31
Security 31
JWT 31
Session 32
OAuth2 32
Build tools 32
Maven 32
Gradle 33
Hibernate 33
Liquibase 33
Caching 33
Ehcache 34
Hazelcast 34
Infinispan 34
Swagger 34
Thymeleaf 34
Dropwizard metrics 35
WebSocket 35
Kafka 35
Testing frameworks 36
JUnit 36
Gatling 36
Cucumber 36
Introduction to database options 36
SQL databases 37
H2 37
MySQL 37
MariaDB 37
PostgreSQL 37
MS SQL 38
Oracle 38
NoSQL databases 38
MongoDB 38
Cassandra 38
Elasticsearch 39
Installation and setup 39
Prerequisites 39
[ ii ]
Table of Contents
Tools required 40
Installation procedure 40
Java 8 40
Git 41
Node.js 41
Yarn 42
Docker 42
IDE configuration 43
System setup 43
Installation of JHipster 44
Summary 45
Chapter 3: Building Monolithic Web Applications with JHipster 46
Application generation 47
Step 1 – preparing the workspace 47
Step 2 – generating code using JHipster 47
Server-side options 49
Client-side options 53
Internationalization options 54
Testing 55
Modules 56
Code walkthrough 58
File structure 59
Server-side source code 62
Java source 63
Resources 70
client-side source code 70
Starting the application 73
Application modules 74
Home and Login modules 75
Account modules 77
Settings 78
Password 78
Registration 79
Admin module 80
User management 80
Metrics 81
Health 82
[ iii ]
Table of Contents
Configuration 82
Audits 83
Logs 83
API 84
Running generated tests 84
Server-side tests 85
Client-side tests 85
Summary 86
Chapter 4: Entity Modeling with JHipster Domain Language 87
Introduction to JDL 87
DSL grammar for JDL 88
Entity modeling with JDL 88
Relationship management 89
DTO, service, and pagination options 90
JDL Studio 92
Use case entity model with explanation 93
Entities 93
Relationships 96
Options for entities 97
Entity generation with JHipster 99
Generated code walkthrough 100
Server-side source code 102
Domain class for the entity 102
Repository interface for the entity 105
Service class for the entity 105
Resource class for the entity 106
Client side 107
TypeScript model class for the entity 107
Angular services for the entity 107
Angular components of the entity 108
Angular route for the entity 109
Angular module for the entity 110
Generated pages 111
Running generated tests 114
Summary 115
Chapter 5: Customization and Further Development 116
Live reload for development 117
[ iv ]
Table of Contents
[v]
Table of Contents
[ vi ]
Table of Contents
Summary 201
Chapter 9: Building Microservices with JHipster 202
Application architecture 203
Gateway application generation 204
Converting a monolithic application to a microservice gateway 205
Application generation 206
Generating a new Gateway 207
Gateway configuration 213
JWT authentication 217
How JWT works 217
Microservice application - Invoice Service with MySQL database 220
Application generation 220
Microservice configuration 225
Microservice application - notification service with NoSQL
database 229
Application generation 229
Microservice configuration 231
Summary 232
Chapter 10: Working with Microservices 233
Setting up JHipster Registry locally 233
Using a pre-packaged WAR file 235
Building from source 237
Docker mode 237
Running a generated application locally 239
Gateway application pages 239
JHipster Registry pages 242
System status 243
Below renew threshold 243
Instances registered 243
General info and health 243
Application listing page 244
Metrics page 245
Health page 247
Configuration page 248
Logs page 248
Swagger API endpoints 249
[ vii ]
Table of Contents
[ viii ]
Table of Contents
Index 344
[ ix ]
Preface
This book, Full Stack development with JHipster, aims to address the following challenges
faced by full-stack developers today:
JHipster provides a platform for developers to easily create web applications and
microservices from scratch, without having to spend a lot of time wiring everything
together and integrating technologies together. This frees up time immensely for developers
to actually focus on their solution rather than spending time learning and writing
boilerplate code. JHipster will help novice and experienced developers to be more
productive from day one. It's like pair programming with an entire community.
This book will take you on a journey from zero to hero in full stack development. You will
learn to create complex production-ready Spring Boot and Angular web applications from
scratch using JHipster and will go on to develop and deploy features and business logic on
cloud services. You will also learn about microservices and how to convert a monolithic
application into the microservice architecture as it evolves using JHipster. Additionally, you
will learn how to make use of the new React support being introduced in JHipster and
about various best practices and suggestions from the JHipster community and the core
development team.
Preface
Full stack web app developers who want to reduce the amount of boilerplate they
write and save time, especially for greenfield projects.
Backend developers who want to learn full stack development with Angular or
React
Full-stack developers who want to learn microservice development
Developers who want to jump-start their full stack web application or
microservice development
Developers who want to quickly prototype web applications or microservices
$IBQUFS, Getting Started with JHipster, introduces the JHipster platform. It will also give
the reader a brief overview of different server-side, client-side, and DB technology options
offered by JHipster. This chapter will also provide instructions to install and use JHipster
and various tools and options supported by it.
$IBQUFS, Building Monolithic Web Applications with JHipster, guides the user through the
creation of a production-ready Spring boot and Angular web applications from scratch
using JHipster and will take the reader through the generated code, screens, and concepts.
$IBQUFS, Entity Modeling with JHipster Domain Language, introduces the reader to JHipster
domain language (JDL) and will teach build business logic with entity modeling and entity
creation using JDL and JDL studio.
[2]
Preface
$IBQUFS, Customization and Further Development, guides the reader through further
development of the generated application. It will also teach how to the reader more about
using technologies such as Angular, Bootstrap, Spring Security, Spring MVC REST, and
Spring Data.
$IBQUFS, Testing and Continuous Integration, guides the reader through testing and setting
up a continuous integration pipeline using Jenkins.
$IBQUFS, Going into Production, shows the reader how to use Docker and how to build and
package the app for production. It will also introduce the reader to some of the production
cloud deployment options supported by JHipster.
$IBQUFS, Building Microservices with JHipster, guides the reader through converting a
JHipster monolith web application into a full-fledged microservice architecture with a
Gateway, Registry, monitoring console, and multiple microservices. It will also guide the
reader through the generated code and components such as JHipster registry, JHipster
console, API gateway, and JWT.
$IBQUFS, Working with Microservices, guides the reader through running the generated
applications locally and creating domain entities for the microservice architecture using
JHipster domain language.
$IBQUFS, Deploying with Docker Compose, introduces the reader to advanced local and
cloud deployment options for microservices. It will also guide the user through local
deployment and testing of the generated microservice stack using Docker Compose and
JHipster.
$IBQUFS, Deploying to the Cloud with Kubernetes, guides the user through the Google
cloud deployment of the generated microservice stack using Kubernetes and JHipster.
$IBQUFS, Using React for the Client-Side, takes the user through generating an application
with React on the client side instead of Angular using JHipster.
$IBQUFS, Best Practices with JHipster, summarizes what the reader has learned so far and
will suggest best practices and next steps to utilize the skills learned.
[3]
Preface
It will also be easier if you are familiar with using technologies such as Docker and
Kubernetes, as it will help you grasp some of the chapters easily.
You will also need JDK8, Git, Docker, and NodeJS installed; your favorite web browser; a
terminal application; and your favorite code editor/IDE.
Once the file is downloaded, please make sure that you unzip or extract the folder using the
latest version of:
[4]
Preface
The code bundle for the book is also hosted on GitHub at IUUQTHJUIVCDPN
1BDLU1VCMJTIJOH'VMM4UBDL%FWFMPQNFOUXJUI+)JQTUFS. In case there's an update to
the code, it will be updated on the existing GitHub repository.
We also have other code bundles from our rich catalog of books and videos available
at IUUQTHJUIVCDPN1BDLU1VCMJTIJOH. Check them out!
Conventions used
There are a number of text conventions used throughout this book.
$PEF*O5FYU: Indicates code words in text, database table names, folder names, filenames,
file extensions, pathnames, dummy URLs, user input, and Twitter handles. Here is an
example: "At the backend, modify the TBWF method of 1SPEVDU0SEFS4FSWJDFKBWB to
create an Invoice and Shipment for the 1SPEVDU0SEFS and save them all."
FOVN4J[F\
4.-9-99-
^
FOUJUZ1SPEVDU$BUFHPSZ\
OBNF4USJOHSFRVJSFE
EFTDSJQUJPO4USJOH
^
[5]
Preface
When we wish to draw your attention to a particular part of a code block, the relevant lines
or items are set in bold:
FOUJUZ1SPEVDU0SEFS\
QMBDFE%BUF*OTUBOUSFRVJSFE
TUBUVT0SEFS4UBUVTSFRVJSFE
invoiceId Long
DPEF4USJOHSFRVJSFE
^
Bold: Indicates a new term, an important word, or words that you see onscreen. For
example, words in menus or dialog boxes appear in the text like this. Here is an example:
"You can alternatively test this via your Gateway application. Log in to
our Gateway application and then navigate to Administration | Gateway."
Get in touch
Feedback from our readers is always welcome.
General feedback: Email GFFECBDL!QBDLUQVCDPN and mention the book title in the
subject of your message. If you have questions about any aspect of this book, please email
us at RVFTUJPOT!QBDLUQVCDPN.
[6]
Preface
Errata: Although we have taken every care to ensure the accuracy of our content, mistakes
do happen. If you have found a mistake in this book, we would be grateful if you would
report this to us. Please visit XXXQBDLUQVCDPNTVCNJUFSSBUB, selecting your book,
clicking on the Errata Submission Form link, and entering the details.
Piracy: If you come across any illegal copies of our works in any form on the Internet, we
would be grateful if you would provide us with the location address or website name.
Please contact us at DPQZSJHIU!QBDLUQVCDPN with a link to the material.
If you are interested in becoming an author: If there is a topic that you have expertise in
and you are interested in either writing or contributing to a book, please visit
BVUIPSTQBDLUQVCDPN.
Reviews
Please leave a review. Once you have read and used this book, why not leave a review on
the site that you purchased it from? Potential readers can then see and use your unbiased
opinion to make purchase decisions, we at Packt can understand what you think about our
products, and our authors can see your feedback on their book. Thank you!
[7]
Introduction to Modern Web
1
Application Development
According to the Stack Overflow developer survey 2017 (IUUQTJOTJHIUT
TUBDLPWFSGMPXDPNTVSWFZEFWFMPQFSQSPGJMFTQFDJGJDEFWFMPQFSUZQFT), full-
stack web developer is the most popular developer title. The software industry defines a full-
stack developer as someone who can work on different areas of an application stack. The
term stack refers to different components and tools that make up an application.
In terms of web application development, the stack can be broadly classified into two
areascfrontend and backend stack or client-side and server-side stack. Frontend generally
refers to the part that is responsible for rendering the user interface, and backend refers to
the part that is responsible for the business logic, database interactions, user authentication,
server configuration, and so on. A full-stack Java web application developer is expected to
work on both frontend and backend technologies, ranging from writing HTML/JavaScript
for the user interface to writing Java class files for business logic and SQL queries for
database operations as required.
With an ever-evolving software architecture landscape, the scope of technologies that a full-
stack web developer is expected to work has increased tremendously. It is no longer enough
that we can write HTML and JavaScript to build a user interface, we are expected to know
client-side frameworks such as Angular, React, VueJS, and so on. It is also not enough that
we are proficient in enterprise Java and SQL, we are expected to know server-side
frameworks such as Spring, Hibernate, Play, and so on.
Discovering Diverse Content Through
Random Scribd Documents
Mutta siihen puhelu keskeytyi, sillä kellään ei ollut enempää
sanomista. Parin minuutin ajan kukin tuijotti eteensä. Silloin Halvor
nousi paikaltaan ja toiset kavahtivat ihan kuin syvästä unesta.
Halvor veti nyt takkinsa alta esiin oman uuden kellonsa. Hän astui
lattian poikki Ingmarin luo, joka uudestaan oli istuutunut pöydän
ääreen. — "Kun minä nyt otin sinulta isäsi kellon, saat sinä sen
sijaan minulta tämän", hän sanoi.
*****
Eljas Olli Erkinpoika oli kotoisin Eljaalasta, mutta naituaan
Ingmarin Katrin hän oli muuttanut Ingmarilaan kotivävyksi. Hänellä
oli ollut saita ja ilkeä isä. Poikaa oli pienenä kohdeltu kovasti, ei
annettu edes ruokaakaan riittämään asti, ja samalla lailla isä sorti
häntä vielä täysi-ikäisenäkin. Ukko oli lakkaamatta patistanut häntä
työhön, häntä ei koskaan laskettu nuorten huveihin eikä hänen edes
pyhänä annettu olla jouten. Naituaankaan hän ei päässyt omaksi
isännäkseen, vaan sai muuttaa Ingmarilaan appiukon käskettäväksi.
Ja siellä ei sen paremmin ollut tarjona muuta kuin työntekoa ja
säästämistä. Mutta Ingmar Ingmarinpojan eläessä Eljas näytti olevan
aivan tyytyväinen, tehdä myhki työtä eikä niskoitellut. Kyläläiset
sanoivat, että saivatpa nyt Ingmarit mieleisensä vävyn, sillä Eljas
Erkinpoika ei näyttänyt tietävän maailmassa muuta olevankaan kuin
työtä.
Mutta Katrin sisaret eivät olleet yhtä viisaita kuin hän. Heitä
hävetti tuo hurja elämä ja juopuneiden remu ja hoilotus, kun se
kuului Ingmarilasta maantielle asti. He vuoroin pilkkasivat, vuoroin
uhkailivat, ja vaikka vävy olikin luonnostaan hyvänsävyinen mies,
kiukustui hän sentään toisinaan. Ja usein vallitsi talossa riita ja tora.
Kun syksy tuli, tahtoi Katri että poika saisi tänä vuonna niinkuin
edellisinäkin lähteä suurtenkouluun, mutta mies, joka oli pojan
holhooja, ei suvainnut siitä puhuttavankaan.
"Ingmarista tehdään talonpoika, samanlainen kuin minä ja hänen
isänsä ja minun isäni. Ensi talveksi me kahden rakennamme salolle
sysimiiluja. Sen parempaa opinkäyntiä hän ei tarvitse. Hänen
ikäisenään minäkin sain viettää koko talvet miilusaunassa."
Se oli Katrin mieleen, että Eljas piti poikaa mukanaan. Olihan edes
jonkin verran takeita, ettei mies jäisi makaamaan maantienojaan
eikä ajaisi hevosta kuoliaaksi.
Katri säikähti niin, että polvet olivat pettää. Sydän lyödä jyskytti
niin kovasti, että hänen täytyi istahtaa rappusille ennen kuin jaksoi
mennä kantamaan Ingmaria sisään.
Nostaessaan veljeään rattailta hän huomasi, ettei Ingmar
nukkunut, vaan oli kylmä ja tajuton kuin kuollut. Katri kantoi hänet
sylissään peräkamariin. Sitten hän sulki oven ja koetti saada poikaa
hereille.
Kun Katri palasi pojan luo, oli tämä jo tointunut, mutta päätä
pakotti kovasti ja kaikki jäsenet olivat tunnottomina. "Luuletko, että
minä tähän kuolen?" kysyi hän Katrilta. — "Ethän nyt toki", sanoi
tämä ja istui hänen viereensä. — "Minä en tiennyt, mitä he minulle
tarjosivat", sanoi Ingmar. — "Jumalan kiitos, ettet tiennyt", sanoi
Katri vakavasti. — "Kirjoita siitä siskoillekin, jos minä kuolen", sanoi
poika. "Sano, että minä en ollenkaan tiennyt siinä olevan väkeviä."
— "Kyllä kirjoitan", sanoi Katri. — "Minä vannon, etten tiennyt."
Katri aukaisi oven. Saattoi olla hyvä, että Eljaskin, joka vielä istui
siellä sisällä, saisi kuulla Ingmarin puheet.
*****
Siitä lähtien kun Halvor oli saanut kellon, oli puodissa pitkän aikaa
vilkas liike. Kuka pitäjäläinen vain kirkolle tulikin, hänen täytyi keksiä
jokin asian tapainen poiketakseen Halvorin myymälään ja
saadakseen tältä kuulla kertomuksen Suur-Ingmarin kellosta.
Valkoturkkisia talonpoikia seisoa jonotti tuntikausia tiskin nojalla,
totiset, ryppyiset kasvot Halvoriin päin, kun tämä kertoi. Lopuksi
Halvor aina veti kellon esille ja näytti sen rikkinäistä kellotaulua ja
kuoressa olevaa kuhmua. — "Vai tuohon paikkaan se isku sattui?"
sanoivat talonpojat ja olivat näkevinään koko tapahtuman.
"Suotta sinä niin kovasti isket", sanoi Eljas. "Paremmin tekisit, kun
katsoisit miten minun selkäni kävi."
Eljas oli sitten alati vuoteen omana, hän ei kyennyt omin voimin
kääntymäänkään. Mutta puhua hän jaksoi, ja päivät päästään hän
kärtti viinaa.
Tämä vuosi oli vaikein mitä Katri oli elänyt. Mies kiusasi häntä
juonillaan usein niin, että hän tunsi voimiensa loppuvan. Eljas syyti
suustaan roskapuheita ja manauksia niin suunnattomasti, että talo
tuntui kuohuvan myrkkyä kuin helvetti.
*****
Hän ajatteli kevättöitä, jotka oli saatava pois toinen toisensa tieltä,
touon tekoa ja heinän kylvöä, kevätpesuja ja -leipomisia, kankaiden
kutomista ja neulomatöitä. Ihan mahdotonta hänen on kestää sitä
työn paljoutta.
Katri ei ollut kuullut hänen tuloaan. Halvor oli tainnut seistä siinä
jo kotvan aikaa.
Halvorin ensi sanat kuullessaan Katri vielä epäili, että kenties hän
oli tuon tahallaan keksinyt häntä pilkatakseen, mutta sitten hän
vähitellen vakuuttui, että Halvor tarkoitti täyttä totta.
Katri oli näet aina siihen asti luullut Halvorin kosineen häntä vain
sen vuoksi, että hän oli rikas ja hyvää sukua. Hän ei ollut koskaan
uskonut, että hän itse Halvoria miellyttäisi. Hän tiesi kyllä itse, ettei
hän ollut sellainen tyttö, josta miehet pitävät. Eikä hän sitä paitsi
itsekään silloin ollut rakastunut enempää Halvoriin kuin
Eljakseenkaan.
Katrin sydän alkoi lyödä niin kovasti, että häntä vapisutti. Hänessä
heräsi jotakin, jota hän ei koskaan ennen ollut tuntenut. Ensin se oli
hänestä outoa, kunnes hänelle yht'äkkiä selvisi, että Halvorin hyvyys
oli lämmittänyt hänen paleltuneen mielensä, niin että rakkaus saattoi
siinä piankin leimahtaa ilmiliekkiin.
Katri tuskin tohti liikahtaa paikaltaan tai sanoa yhtään sanaa, sillä
hän pelkäsi Halvorin hänen kasvojensa värähdyksistä tai liikkeittensä
rauhattomuudesta heti huomaavan, että hän oli häneen rakastunut.
Mutta jotakin hänelle kuitenkin piti vastata.
Halvor oli nyt sanonut sanottavansa ja katsoi tyynesti häneen.
*****
Silloin ovi aukeni ja sisään astui vielä uusi vieras. Ingmar meni
häntä tervehtimään ja johdatti hänet tuvan perälle. "Tämä on
Timmin Halvor Halvorinpoika", hän esitteli Birger Sven
Petterinpojalle. Sven Petterinpoika ei noussut paikaltaan, tervehti
vain kättään hiukan heilauttamalla ja sanoi, suu pienessä
ivahymyssä: "Onpa hauska tavata niin maineikasta miestä." Ingmar
Ingmarinpoika työnsi tuolin Halvorin eteen, kolisuttaen sitä niin, ettei
Halvorin vastaus olisi kuulunutkaan.
Katrista olisi ollut parasta, että hän olisi odottanut pari kolme
vuotta; silloin jokainen olisi ymmärtänyt, ettei hän ollut
malttamattomuudesta Eljakselle mitään tehnyt. Ja mikä kiire hänellä
olikaan, Katri ajatteli. Pitäisihän hänen tietää, etten minä tule
ottamaan ketään muuta kuin hänet.
Hän seisahtui sinne niin lähelle ovea, että siitä kuuli joka sanan
mitä tuvassa puhuttiin. Häntä harmitti ja tuskastutti tuo, että Halvor
tuli näin liian aikaisin. Oma syynsä, jos ei Katri koskaan enää voi
hänelle mennä. Johan se paha huuto nyt kuului olevan liikkeellä. Ja
miten minä sen kestän, jos hänet menetän, hän ajatteli painellen
kädellään sydänalaansa.
Nyt Halvor tietysti uskoi, ettei hän hänestä pitänyt, ja jos hän nyt
pääsee lähtemään, ei hän koskaan enää palaa.
Ei, kuinka hän olikaan voinut niin tylysti menetellä, vaikka hän niin
kovasti Halvorista piti?
Katri tempaisi oven auki ja ehätti Halvorin tielle, juuri kun tämä oli
lähtemässä.
Mutta kirkkoherran mieltä kosketti enimmän se, että nyt oli puhe
juuri Jerusalemista, ja hänen ihmeelliset aavistuksensa heräsivät
taas henkiin.
Taisi sentään olla paha, että hän juuri tänään tuli, ajatteli
koulumestari.
Hänen mieleensä johtui entinen kuva, joka oli ihan tämän
kaltainen. Sattui jonkin kerran kouluaikana olemaan oikein kaunis
kevätpäivä, ja pikku lintunen tuli istumaan koulun ikkunalle ja lauloi
siinä laulamistaan. Ja samassa kaikki lapset alkavat pyytää lupaa,
heittävät lukemisen, telmivät ja tuiskivat eikä heitä saa asettumaan.
Samalla tavalla oli Höökin Matin tulo vaikuttanut näihin kuulijoihin.
Mutta koulumestari tahtoi näyttää papille ja muille, että kyllä hän
jaksaa tuollaisen metelin hillitä.
ebooksecure.com