Introduksjon til Bootique

1. Oversikt

Bootique er en veldig lett åpen kildekode containerfri JVM-rammeverket hadde som mål å bygge neste generasjons skalerbare mikrotjenester. Den er bygget oppå den innebygde Jetty-serveren og støtter fullt ut HVILE håndtere med jax-rs.

I denne artikkelen viser vi hvordan du bygger en enkel webapplikasjon ved hjelp av Bootique.

2. Maven-avhengigheter

La oss begynne å bruke Bootique ved å legge til følgende avhengighet i pom.xml:

 io.bootique.jersey bootique-jersey kompilere io.bootique bootique-test test 

Derimot, Bootique krever også å erklære noen få BOM (“Bill of Material”) import. Det er derfor å følge delen må legges til i pom.xml:

   io.bootique.bom bootique-bom 0.23 pom import 

Den siste versjonen av Bootique er tilgjengelig i Central Maven Repository.

Å bygge en kjørbar glass, Bootique er avhengig av maven-shade-plugin. Derfor må vi også legge til under konfigurasjonen også:

   org.apache.maven.plugins maven-shade-plugin 

3. Starte en applikasjon

Den enkleste måten å starte en Bootique søknaden er å påkalle Bootique‘S utføre () metode fra hovedmetoden:

public class App {public static void main (String [] args) {Bootique.app (args) .autoLoadModules () .exec (); }}

Dette starter imidlertid ikke den innebygde serveren. Når koden ovenfor er kjørt, skal følgende logg vises:

NAVN com.baeldung.bootique.App ALTERNATIVER -c yaml_location, --config = yaml_location Angir YAML-konfigurasjonssted, som kan være en filbane eller en URL. -h, --help Skriver ut denne meldingen. -H, --help-config Skriver ut informasjon om applikasjonsmoduler og deres konfigurasjonsalternativer. -s, --server Starter bryggeserver.

Dette er ingenting annet enn de tilgjengelige programargumentene som følger med Bootique.

Navnene er selvforklarende; Derfor, for å starte serveren må vi passere enten –S eller –Server argumentet og serveren vil være i gang på standardport 8080.

4. Moduler

Bootique applikasjoner er laget med samlinger av “moduler”. I Bootique’S term “En modul er et Java-bibliotek som inneholder noe kode” som betyr at den behandler hver tjeneste som en modul. Det bruker Google Guice for avhengighetsinjeksjon.

For å se hvordan det fungerer, la oss lage ett grensesnitt:

offentlig grensesnitt HelloService {boolean save (); }

Nå må vi lage en implementering:

offentlig klasse HelloServiceImpl implementerer HelloService {@Override public boolean save () {return true; }}

Det er to måter vi kan laste modulen på. Den første er å bruke Guice‘S Modul grensesnitt, og den andre er ved hjelp av Bootique‘S BQModuleProvider som også er kjent som automatisk lasting.

4.1. Guice-modul

Her kan vi bruke Guice‘S Modul grensesnitt for å binde forekomster:

offentlig klasse ModuleBinder implementerer modul {@Override public void configure (Binder binder) {binder .bind (HelloService.class) .to (HelloServiceImpl.class); }}

Når modulen er definert, må vi tilordne denne tilpassede modulen til Bootique forekomst:

Bootique .app (args) .module (module) .module (ModuleBinder.class) .autoLoadModules () .exec ();

4.2. BQModuleProvider (automatisk lasting)

Her er alt vi trenger å gjøre å definere det tidligere opprettede modulbindemidlet med BQModuleProvider:

offentlig klasse ModuleProvider implementerer BQModuleProvider {@Override public Module module () {return new ModuleBinder (); }}

Fordelen med denne teknikken er at vi ikke trenger å kartlegge modulinformasjon med Bootique forekomst.

Vi trenger bare å lage en fil i /resources/META-INF/services/io.bootique.BQModuleProvider og skriv hele navnet på ModuleProvider inkludert pakkenavn og Bootique tar seg av resten:

com.baeldung.bootique.module.ModuleProvider

Nå kan vi bruke @Injiser kommentar for å bruke tjenesteforekomster på kjøretiden:

@Injiser HelloService helloService;

En viktig ting å merke seg her er at siden vi bruker BootiqueSin egen DI-mekanisme, vi trenger ikke å bruke Guice @ImplementedBy kommentar for å binde tjenesteinstansene.

5. REST Endpoint

Det er greit å lage REST-sluttpunkter ved hjelp av JAX-RS API:

@Path ("/") offentlig klasse IndexController {@GET public String index () {return "Hello, baeldung!"; } @ POST offentlig Strenglagring () {return "Data lagret!"; }}

Å kartlegge endepunktene i Bootique‘S egen Jersey for eksempel må vi definere en JerseyModule:

Modulmodul = bindemiddel -> JerseyModule .extend (bindemiddel) .addResource (IndexController.class);

6. Konfigurasjon

Vi kan tilby innebygd eller tilpasset konfigurasjonsinformasjon i en YAML-basert eiendomsfil.

For eksempel, hvis vi vil starte applikasjonen på en tilpasset port og legge til en standard URI-kontekst ‘hei’, kan vi bruke følgende YAML-konfigurasjon:

brygge: kontekst: / hallo kontakt: port: 10001

Nå mens vi starter applikasjonen, må vi oppgi denne filens plassering i konfigurasjonsparameteren:

--config = / home / baeldung / bootique / config.yml

7. Logging

Ut av boksen Bootique kommer med en bootique-logback modul. For å bruke denne modulen, må vi legge til følgende avhengighet i pom.xml:

 io.bootique.logback bootique-logback 

Denne modulen kommer med en BootLogger grensesnitt med vi kan overstyre for å implementere tilpasset logging:

Bootique.app (args) .module (module) .module (ModuleBinder.class) .bootLogger (new BootLogger () {@Override public void trace (Supplier args) {// ...} @Override public void stdout (String args ) {// ...} @Override public void stderr (String args, Throwable thw) {// ...} @Override public void stderr (String args) {// ...}}). AutoLoadModules (). utføre ();

Vi kan også definere loggkonfigurasjonsinformasjon i config.yaml fil:

log: level: advare appenders: - type: file logFormat: '% c {20}:% m% n' file: /path/to/logging/dir/logger.log

8. Testing

For testing, Bootique kommer med bootique-test modul. Det er to måter vi kan teste a Bootique applikasjon.

Den første tilnærmingen er ‘Forgrunn’ tilnærming som gjør at alle testtilfeller kjøres på hovedtesttråden.

Den andre er 'bakgrunn' tilnærming som gjør at testtilfellene kjører på et isolert trådområde.

Forgrunnsmiljøet kan initialiseres ved hjelp av BQTestFactory:

@Rule public BQTestFactory bqTestFactory = ny BQTestFactory ();

‘Bakgrunnsmiljøet kan initialiseres ved hjelp av BQDaemonTestFactory:

@Rule public BQDaemonTestFactory bqDaemonTestFactory = ny BQDaemonTestFactory ();

Når miljøfabrikken er klar, kan vi skrive enkle testtilfeller for å teste tjenestene:

@Test offentlig ugyldig givenService_expectBoolen () {BQRuntime runtime = bqTestFactory .app ("- server"). AutoLoadModules () .createRuntime (); HelloService-tjeneste = runtime.getInstance (HelloService.class); assertEquals (true, service.save ()); }

9. Konklusjon

I denne artikkelen viste vi hvordan du bygger et program ved hjelp av Bootique’S kjernemoduler. Det er flere andre Bootique moduler tilgjengelig som bootique-jooq, bootique-kotlin, bootique-jobbosv. Den komplette listen over tilgjengelige moduler er tilgjengelig her.

Som alltid er hele kildekoden tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found