Uvod u JHipster

1. Uvod

Ovaj će vam članak pružiti kratki pregled JHipstera, pokazati vam kako stvoriti jednostavnu monolitnu aplikaciju i prilagođene entitete pomoću alata naredbenog retka.

Također ćemo ispitati generirani kôd tijekom svakog koraka, a također ćemo obuhvatiti naredbe za izgradnju i automatizirane testove.

2. Što je Jhipster

JHipster je, ukratko, generator koda visoke razine izgrađen na opsežnom popisu najmodernijih razvojnih alata i platformi.

Glavne komponente alata su:

  • Yeoman, prednji alat za skelu
  • Dobri stari proljetni čizme
  • AngularJS, istaknuti Javascript okvir. JHipster također radi s AngularJS 2

JHipster stvara, sa samo nekoliko naredbi ljuske, punopravni Java web projekt s prijateljskim, odgovornim front-endom, dokumentiranim REST API-jem, sveobuhvatnim pokrivanjem testova, osnovnom sigurnošću i integracijom baze podataka! Dobiveni kôd dobro je komentiran i slijedi najbolju industrijsku praksu.

Ostale ključne tehnologije kojima se on koristi su:

  • Swagger, za API dokumentaciju
  • Maven, Npm, Yarn, Gulp i Bower kao upravitelji ovisnosti i alati za izgradnju
  • Jasmin, kutomjer, krastavac i gatling kao testni okviri
  • Liquibase za verziranje baza podataka

Nismo obvezni koristiti sve te stavke u našoj generiranoj aplikaciji. Neobavezne stavke odabiru se tijekom izrade projekta.

Prekrasna aplikacija koju generira JHipster. Ovo je rezultat rada koji ćemo raditi u ovom članku.

3. Instalacija

Da bismo instalirali JHipster, prvo ćemo morati instalirati sve njegove ovisnosti:

  • Java - preporučeno izdanje 8
  • Git - sustav kontrole verzija
  • NodeJS
  • Maloposjednik
  • Pređa

To je dovoljno ovisnosti ako se odlučite za upotrebu AngularJS 2. Međutim, ako radije koristite AngularJS 1, također biste trebali instalirati Bower i Gulp.

Sada, da završimo, samo moramo instalirati sam JHipster. To je najlakši dio. Budući da je JHipster Yeoman generator, koji je pak Javascript paket, instalacija je jednostavna poput pokretanja jednostavne naredbe ljuske:

pređa globalno dodati generator-jhipster

To je to! Za instaliranje generatora JHipster koristili smo upravitelj paketa Yarn.

4. Izrada projekta

Stvaranje JHipster projekta u osnovi znači izgradnju Yeoman projekta. Sve započinje s jo naredba:

mkdir baeldung-app && cd baeldung-app yo jhipster

Ovo će stvoriti našu mapu projekta, nazvanu baeldung-appi pokrenite Yeomanovo sučelje naredbenog retka koje će nas voditi kroz stvaranje projekta.

Proces uključuje 15 koraka. Preporučujem vam da istražite dostupne mogućnosti na svakom koraku. U opsegu ovog članka stvorit ćemo jednostavan, Monolitni aplikacija, bez previše odstupanja od zadanih opcija.

Evo koraka koji su najrelevantniji za ovaj članak:

  • Vrsta prijave - Odaberite Monolitna primjena (preporuča se za jednostavne projekte)
  • Instalacija ostalih generatora s JHipster tržnice - Tip N. U ovom bismo koraku mogli instalirati sjajne dodatke. Neki od popularnih su entitetska revizija koja omogućuje praćenje podataka; bootstrap-material-design, koji koristi trendovske komponente Material Design, i kutne tablice podataka
  • Maven ili Gradle - Odaberite Maven
  • Ostale tehnologije - Ne birajte nijednu opciju, samo pritisnite Unesi za prelazak na sljedeći korak. Ovdje možemo odabrati uključivanje društvene prijave s Googleom, Facebookom i Twitterom, što je vrlo lijepa značajka.
  • Okvir klijenta - Odaberite [BETA] Kutni 2.x. Mogli bismo ići i s AngularJS 1
  • Omogućiti internacionalizaciju - Tip Y, a zatim odaberite Engleski kao materinji jezik. Kao drugi jezik možemo odabrati onoliko jezika koliko želimo
  • Ispitni okviri - Odaberi Gatling i Kutomjer

JHipster će stvoriti projektne datoteke, a zatim će početi instalirati ovisnosti. Sljedeća poruka bit će prikazana u izlazu:

Gotova sam. Pokretanje npm install za vas da biste instalirali potrebne ovisnosti. Ako to ne uspije, pokušajte sami pokrenuti naredbu.

Instalacija ovisnosti može potrajati. Nakon što završi prikazat će se:

Poslužiteljska aplikacija uspješno je generirana. Pokrenite aplikaciju Spring Boot: ./mvnw Klijentska aplikacija uspješno generirana. Pokrenite svoj webpack razvojni poslužitelj sa: npm start

Naš projekt je sada stvoren. Glavne naredbe možemo pokretati u našoj korijenskoj mapi projekta:

./mvnw #starts Spring Boot, na priključku 8080 ./mvnw clean test # pokreće testove aplikacije test pređe # pokreće testove klijenta

JHipster generira README datoteku smještenu točno u korijensku mapu našeg projekta. Ta datoteka sadrži upute za pokretanje mnogih drugih korisnih naredbi povezanih s našim projektom.

5. Pregled generiranog koda

Pogledajte datoteke koje se automatski generiraju. Primijetit ćete da projekt prilično sliči na standardni Java / Spring projekt, ali s puno dodataka.

Budući da se JHipster brine i za stvaranje prednjeg koda, pronaći ćete paket.json datoteka, a webpack mapu i neke druge stvari povezane s webom.

Idemo brzo istražiti neke ključne datoteke.

5.1. Pozadinske datoteke

  • Kao što se i očekivalo, Java kôd je sadržan u src / main / java mapu
  • The src / glavni / resursi mapa sadrži dio statičnog sadržaja koji koristi Java kôd. Ovdje ćemo pronaći datoteke za internacionalizaciju (u i18n mapa), predlošci e-pošte i neke konfiguracijske datoteke
  • Jedinstveni i integracijski testovi nalaze se u src / test / java mapu
  • Uključeni su testovi izvedbe (Gatling) src / test / gatling. Međutim, u ovom trenutku u ovoj mapi neće biti puno sadržaja. Nakon što stvorimo neke cjeline, testovi performansi tih objekata bit će smješteni ovdje

5.2. Prednji kraj

  • Korijenska prednja mapa je src / main / webapp
  • The app mapa sadrži velik dio modula AngularJS
  • i18n sadrži datoteke internacionalizacije za prednji kraj
  • Jedinstveni testovi (Karma) su u src / test / javascript / spec mapu
  • Testovi od kraja do kraja (kutomjer) nalaze se u src / test / javascript / e2e mapu

6. Izrada prilagođenih entiteta

Entiteti su gradivni elementi naše JHipster aplikacije. Oni predstavljaju poslovne objekte, poput a Korisnik, a Zadatak, a Objavi, a Komentaritd.

Stvaranje entiteta s JHipsterom to je bezbolan proces. Objekt možemo stvoriti pomoću alata naredbenog retka, slično onome kako smo kreirali sam projekt, ili putem JDL-Studija, mrežnog alata koji generira JSON predstavu entiteta koji se kasnije mogu uvesti u naš projekt.

U ovom članku upotrijebimo alate naredbenog retka za stvaranje dvaju entiteta: Objavi i Komentar.

A Objavi treba imati naslov, tekstualni sadržaj i datum nastanka. Također bi trebao biti povezan s korisnikom koji je tvorac Objavi. A Korisnik može imati mnogo Postovi povezan s njima.

A Objavi može imati i nula ili mnogo Komentari. Svaki Komentar ima tekst i datum stvaranja.

Da bi se pokrenuo proces stvaranja našeg Objavi entitet, idite u korijensku mapu našeg projekta i upišite:

yo jhipster: entitet post

Sada slijedite korake predstavljene sučeljem.

  • Dodajte polje s imenom titula tipa Niz i dodajte neka pravila provjere valjanosti u polje (Potreban, Minimalna duljina i Maksimalna duljina)
  • Dodajte još jedno polje pod nazivom sadržaj tipa Niz i napravite ga također Potreban
  • Dodajte treće polje s imenom Datum stvaranja, tipa LocalDate
  • Dodajmo sada odnos s Korisnik. Primijetite da je entitet Korisnik već postoji. Nastao je tijekom koncepcije projekta. Ime drugog entiteta je korisnik, naziv veze je stvoritelj, a vrsta je mnogo-prema-jednom, polje prikaza je Ime, i bolje je uspostaviti vezu potreban
  • Ne odlučite se za upotrebu DTO-a, nastavite Izravni entitet umjesto toga
  • Odaberite ubrizgati spremište izravno u klasu usluge. Primijetite da bi u stvarnom svijetu vjerojatno bilo razumnije odvojiti REST kontroler od servisne klase
  • Da biste završili, odaberite beskonačni svitak kao paginacijski tip
  • Dajte dozvolu JHipsteru da prepisuje postojeće datoteke ako je potrebno

Ponovite gornji postupak za stvaranje entiteta s imenom komentar, s dva polja, tekst, tipa Niz, i Datum stvaranja tipa LocalDate. Komentar također treba imati potrebnu mnogo-prema-jednom veza sa Objavi.

To je to! Puno je koraka u procesu, ali vidjet ćete da vam ne treba toliko vremena da ih dovršite.

Primijetit ćete da JHipster stvara hrpu novih datoteka i modificira nekoliko drugih, kao dio procesa stvaranja entiteta:

  • A.jhipster kreira se mapa koja sadrži JSON datoteka za svaki objekt. Te datoteke opisuju strukturu entiteta
  • Stvarni @ Entitet označeni razredi su u domena paket
  • Spremišta se kreiraju u spremište paket
  • OSTALI kontrolori idu u web.odmaranje paket
  • Dnevnici promjena Liquibase za svaku izradu tablice nalaze se u resources / config / liquibase / changelog mapu
  • U prednjem dijelu, mapa za svaki entitet kreira se u entiteta imenik
  • Datoteke za internacionalizaciju postavljaju se u i18n mapa (slobodno modificirajte one ako želite)
  • Nekoliko testova, front-end i back-end kreirano je u src / test mapu

To je poprilično puno koda!

Slobodno pokrenite testove i dvaput provjerite jesu li svi položili. Sada također možemo pokrenuti testove performansi s Gatlingom, koristeći naredbu (aplikacija mora biti pokrenuta da bi ti testovi prošli):

mvnw gatling: izvršiti

Ako želite provjeriti front-end u akciji, pokrenite aplikaciju sa./ mvnw, navigacija do // localhost: 8080 i prijavite se kao admin korisnik (lozinka je admin).

Odaberite Objavi na gornjem izborniku, ispod Entiteti stavka izbornika. Prikazat će vam se prazan popis koji će kasnije sadržavati sve postove. Klikni na Izradite novi post gumb za otvaranje obrasca za uključivanje:

Primijetite koliko je JHipster pažljiv prema komponentama obrasca i porukama provjere valjanosti. Naravno, možemo modificirati prednji kraj koliko god želimo, ali forma je vrlo dobro izgrađena takva kakva jest.

7. Kontinuirana podrška integraciji

JHipster može automatski stvoriti konfiguracijske datoteke za najčešće korištene alate za kontinuiranu integraciju. Samo pokrenite ovu naredbu:

yo jhipster: ci-cd

I odgovorite na pitanja. Ovdje možemo odabrati za koje CI alate želimo stvoriti konfiguracijske datoteke, želimo li koristiti Docker, Sonar, pa čak i rasporediti na Heroku kao dio procesa gradnje.

The ci-cd naredba može stvoriti konfiguracijske datoteke za sljedeće CI alate:

  • Jenkins: datoteka je JenkinsFile
  • Travis CI: datoteka je .travis.yml
  • Zaokružite CI: datoteka je krug.iml
  • GitLab: datoteka je .gitlab-ci.yml

8. Zaključak

Ovaj je članak dao malo ukusa onoga za što je sposoban JHipster. Tu naravno ima puno više nego što ovdje možemo pokriti, pa svakako nastavite istraživati ​​službenu web stranicu JHipster.

I kao i uvijek, kôd je dostupan na GitHub-u.