Introduktion til JHipster

1. Introduktion

Denne artikel giver dig et hurtigt overblik over JHipster, viser dig, hvordan du opretter en simpel monolitisk applikation og brugerdefinerede enheder ved hjælp af kommandolinjeværktøjer.

Vi vil også undersøge den genererede kode under hvert trin og også dække build-kommandoer og automatiserede tests.

2. Hvad er Jhipster

JHipster er i en nøddeskal en kodegenerator på højt niveau bygget på en omfattende liste over banebrydende udviklingsværktøjer og platforme.

Værktøjets hovedkomponenter er:

  • Yeoman, et front-end stilladsværktøj
  • God gammel forårstøvle
  • AngularJS, den fremtrædende Javascript-ramme. JHipster fungerer også med AngularJS 2

JHipster opretter med få shell-kommandoer et fuldt udbygget Java-webprojekt med en venlig, lydhør frontend, dokumenteret REST API, omfattende testdækning, grundlæggende sikkerhed og databaseintegration! Den resulterende kode er godt kommenteret og følger branchens bedste praksis.

Andre vigtige teknologier, der benyttes af det, er:

  • Swagger til API-dokumentation
  • Maven, Npm, Garn, Gulp og Bower som afhængighedsledere og opbygge værktøjer
  • Jasmine, vinkelmåler, agurk og gatling som testrammer
  • Liquibase til databaseversionering

Vi er ikke forpligtet til at bruge alle disse emner i vores genererede applikation. De valgfrie emner vælges under oprettelsen af ​​projektet.

En smuk JHipster-genereret applikation. Dette er resultatet af det arbejde, vi skal udføre gennem denne artikel.

3. Installation

For at installere JHipster skal vi først installere alle dens afhængigheder:

  • Java - version 8 anbefales
  • Git - versionskontrolsystemet
  • NodeJS
  • Yeoman
  • Garn

Det er nok afhængigheder, hvis du beslutter at bruge AngularJS 2. Dog Hvis du foretrækker at gå med AngularJS 1 i stedet, skal du også installere Bower og Gulp.

For at afslutte er vi bare nødt til at installere JHipster selv. Det er den nemmeste del. Da JHipster er en Yeoman-generator, som igen er en Javascript-pakke, er installationen så enkel som at køre en simpel shell-kommando:

garn global tilføj generator-jhipster

Det er det! Vi har brugt Garn-pakkehåndtering til at installere JHipster-generatoren.

4. Oprettelse af et projekt

At skabe et JHipster-projekt er i det væsentlige at bygge et Yeoman-projekt. Alt starter med yo kommando:

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

Dette opretter vores projektmappe, der hedder baeldung-app, og start Yeomans kommandolinjegrænseflade, der vil lede os gennem oprettelsen af ​​projektet.

Processen involverer 15 trin. Jeg opfordrer dig til at udforske de tilgængelige muligheder på hvert trin. Inden for denne artikel opretter vi en enkel, Monolitisk applikation uden at afvige for meget fra standardindstillingerne.

Her er de trin, der er mest relevante for denne artikel:

  • Ansøgningstype - Vælg Monolitisk anvendelse (anbefales til enkle projekter)
  • Installation af andre generatorer fra JHipster Marketplace - Skriv N. I dette trin vil vi muligvis installere seje tilføjelser. Nogle populære er enhedsrevision, der muliggør datasporing; bootstrap-material-design, der bruger de trendy Material Design-komponenter og vinkel-datatabeller
  • Maven eller Gradle - Vælg Maven
  • Andre teknologier - Vælg ikke nogen indstillinger, bare tryk på Gå ind for at gå til næste trin. Her kan vi vælge at tilslutte social login med Google, Facebook og Twitter, hvilket er en meget flot funktion.
  • Kunderamme - Vælg [BETA] Vinkel 2.x. Vi kunne også gå med AngularJS 1
  • Aktiver internationalisering - Skriv Y, vælg derefter engelsk som modersmål. Vi kan vælge så mange sprog, som vi ønsker, som andet sprog
  • Testrammer - Vælg Gatling og Vinkelmåler

JHipster opretter projektfilerne og begynder derefter at installere afhængighederne. Følgende meddelelse vises i output:

Jeg er færdig. Kører npm-installation, så du kan installere de nødvendige afhængigheder. Hvis dette mislykkes, skal du prøve at køre kommandoen selv.

Afhængighedsinstallationen kan tage et stykke tid. Når den er færdig, vises den:

Serverapplikationen blev genereret. Kør din Spring Boot-applikation: ./mvnw Client-applikation genereret med succes. Start din Webpack-udviklingsserver med: npm start

Vores projekt er nu oprettet. Vi kan køre de vigtigste kommandoer i vores projektrodmappe:

./mvnw #starts Spring Boot, på port 8080 ./mvnw ren test # kører applikationens test garntest # kører klienttestene

JHipster genererer en README-fil, placeret lige i rodmappen i vores projekt. Denne fil indeholder instruktioner til at køre mange andre nyttige kommandoer relateret til vores projekt.

5. Oversigt over genereret kode

Se på de automatisk genererede filer. Du vil bemærke, at projektet ligner en hel del et standard Java / Spring-projekt, men med en masse ekstra.

Da JHipster også sørger for at oprette front-end-koden, finder du en pakke.json fil, en webpakke mappe og nogle andre webrelaterede ting.

Lad os hurtigt udforske nogle af de kritiske filer.

5.1. Back-end filer

  • Som forventet er Java-koden indeholdt i src / main / java folder
  • Det src / main / ressourcer mappen har noget af det statiske indhold, der bruges af Java-koden. Her finder vi internationaliseringsfilerne (i i18n mappe), e-mail-skabeloner og nogle konfigurationsfiler
  • Enhedstest og integrationstest findes i src / test / java folder
  • Performance (Gatling) test er i src / test / gatling. Men på dette tidspunkt vil der ikke være meget indhold i denne mappe. Når vi har oprettet nogle enheder, vil præstationstestene for disse objekter blive placeret her

5.2. Front-end

  • Mappen til rodfronten er src / main / webapp
  • Det app mappen indeholder meget af AngularJS-modulerne
  • i18n indeholder internationaliseringsfilerne til frontendelen
  • Enhedstest (Karma) er i src / test / javascript / spec folder
  • End-to-end tests (Vinkelmåler) er i src / test / javascript / e2e folder

6. Oprettelse af brugerdefinerede enheder

Enheder er byggestenene i vores JHipster-applikation. De repræsenterer forretningsobjekterne som en Bruger, a Opgave, a Stolpe, a Kommentar, etc.

At skabe enheder med JHipster er en smertefri proces. Vi kan oprette et objekt ved hjælp af kommandolinjeværktøjer, ligesom hvordan vi har oprettet selve projektet, eller via JDL-Studio, et onlineværktøj, der genererer en JSON-repræsentation af de enheder, der senere kan importeres til vores projekt.

Lad os i denne artikel bruge kommandolinjeværktøjerne til at oprette to enheder: Stolpe og Kommentar.

EN Stolpe skal have en titel, et tekstindhold og en oprettelsesdato. Det skal også være relateret til en bruger, der er skaberen af Stolpe. EN Bruger kan have mange Indlæg forbundet med dem.

EN Stolpe kan også have nul eller mange Kommentarer. Hver Kommentar har en tekst og oprettelsesdato.

At fyre op med skabelsesprocessen for vores Stolpe enhed, gå til rodmappen for vores projekt og skriv:

yo jhipster: enhedspost

Følg nu trinnene, der præsenteres af grænsefladen.

  • Tilføj et felt med navnet titel af typen Snor og tilføj nogle valideringsregler til feltet (Påkrævet, Mindste længde og Maksimal længde)
  • Tilføj et andet felt kaldet indhold af typen Snor og gør det også Påkrævet
  • Tilføj et tredje felt med navnet Oprettelsesdato, af typen LocalDate
  • Lad os nu tilføje forholdet til Bruger. Bemærk, at enheden Bruger eksisterer allerede. Det er oprettet under udformningen af ​​projektet. Navnet på den anden enhed er bruger, forholdets navn er skaberen, og typen er mange-til-en, displayfeltet er navn, og det er bedre at skabe forholdet krævet
  • Vælg ikke at bruge en DTO, gå med Direkte enhed i stedet
  • Vælg at indsprøjte lageret direkte i serviceklassen. Bemærk, at det i en reel applikation sandsynligvis ville være mere rimeligt at adskille REST-controlleren fra serviceklassen
  • Vælg for at afslutte uendelig rulle som pagineringstypen
  • Giv JHipster tilladelse til at overskrive eksisterende filer, hvis det kræves

Gentag processen ovenfor for at oprette en enhed med navnet kommentar, med to felter, tekst, af typen Snor, og Oprettelsesdato af typen LocalDate. Kommentar skal også have et påkrævet mange-til-en forhold til Stolpe.

Det er det! Der er mange trin til processen, men du vil se, at det ikke tager så meget tid at gennemføre dem.

Du vil bemærke, at JHipster opretter en masse nye filer og ændrer et par andre som en del af processen med at oprette enheder:

  • A.jhipster mappe oprettes, der indeholder en JSON fil til hvert objekt. Disse filer beskriver enhedernes struktur
  • Den aktuelle @Enhed bemærkede klasser er i domæne pakke
  • Repositories oprettes i lager pakke
  • REST-controllere går i web.rest pakke
  • Liquibase-ændringslog for hver tabeloprettelse findes i ressourcer / config / liquibase / changelog folder
  • I frontend-delen oprettes en mappe for hver enhed i enheder vejviser
  • Internationaliseringsfiler er oprettet i i18n mappe (du er velkommen til at ændre dem, hvis du vil)
  • Flere test, front-end og back-end oprettes i src / test folder

Det er en hel del kode!

Du er velkommen til at køre testene og dobbelttjekke, om alt er bestået. Nu kan vi også køre præstationstest med Gatling ved hjælp af kommandoen (applikationen skal køre for at disse tests skal bestå):

mvnw gatling: udfør

Hvis du vil kontrollere frontend-enheden i aktion, skal du starte applikationen med./ mvnw, naviger til // localhost: 8080 og log ind som admin bruger (adgangskode er admin).

Vælge Stolpe i topmenuen under Enheder menupunkt. Du får vist en tom liste, der senere indeholder alle indlæg. Klik på Opret et nyt indlæg knap for at åbne inkluderingsformularen:

Bemærk, hvor forsigtig JHipster er på formkomponenterne og valideringsmeddelelserne. Naturligvis kan vi ændre frontenden så meget, som vi vil, men formularen er meget godt bygget, som den er.

7. Kontinuerlig integrationsstøtte

JHipster kan automatisk oprette konfigurationsfiler til de mest anvendte kontinuerlige integrationsværktøjer. Kør bare denne kommando:

yo jhipster: ci-cd

Og besvar spørgsmålene. Her kan vi vælge hvilke CI-værktøjer vi vil oprette konfigurationsfiler til, om vi vil bruge Docker, Sonar og endda distribuere til Heroku som en del af byggeprocessen.

Det ci-cd kommando kan oprette konfigurationsfiler til følgende CI-værktøjer:

  • Jenkins: filen er JenkinsFil
  • Travis CI: filen er .travis.yml
  • Cirkel CI: filen er cirkel.yml
  • GitLab: filen er .gitlab-ci.yml

8. Konklusion

Denne artikel gav en smule smag af hvad JHipster er i stand til. Der er selvfølgelig meget mere, end vi kan dække her, så fortsæt med at udforske det officielle JHipster-websted.

Og som altid er koden tilgængelig på GitHub.