Uvod u Bootique

1. Pregled

Bootique vrlo je lagan open source bez kontejnera JVM okvir imao je za cilj graditi prilagodljive mikro-usluge sljedeće generacije. Izgrađen je na vrhu ugrađenog Jetty poslužitelja i u potpunosti podržava ODMOR rukovatelji sa jax-rs.

U ovom ćemo članku pokazati kako izraditi jednostavnu web aplikaciju pomoću Bootique.

2. Ovisnosti Mavena

Počnimo koristiti Bootique dodavanjem sljedeće ovisnosti u pom.xml:

 io.bootique.jersey bootique-jersey sastaviti io.bootique bootique-test test 

Međutim, Bootique također zahtijeva izjavu nekoliko BOM ("Predmet materijala") uvoz. Zato slijedi odjeljak treba dodati u pom.xml:

   io.bootique.bom bootique-bom 0,23 pom uvoz 

Najnovija verzija Bootique dostupan je u središnjem spremištu Maven.

Da biste izgradili tekuću teglu, Bootique oslanja se na dodatak maven-shadow-dodatak. Zbog toga također moramo dodati i donju konfiguraciju:

   org.apache.maven.plugins maven-shadow-plugin 

3. Pokretanje aplikacije

Najjednostavniji način pokretanja a Bootique aplikacija je pozvati Bootique‘S izvršiti () metoda iz glavne metode:

aplikacija javne klase {public static void main (String [] args) {Bootique.app (args) .autoLoadModules () .exec (); }}

Međutim, ovo neće pokrenuti ugrađeni poslužitelj. Jednom, kada se pokrene gornji kod, trebao bi se prikazati sljedeći zapisnik:

NAZIV com.baeldung.bootique.App OPTIONS -c yaml_location, --config = yaml_location Navodi YAML konfiguracijsko mjesto, što može biti put do datoteke ili URL. -h, --help Ispisuje ovu poruku. -H, --help-config Ispisuje informacije o aplikacijskim modulima i njihovim opcijama konfiguracije. -s, --server Pokreće Jetty poslužitelj.

To nisu ništa drugo nego dostupni programski argumenti koji dolaze u paketu Bootique.

Imena su sama po sebi razumljiva; dakle, za pokretanje poslužitelja trebamo proslijediti bilo koji –S ili –Poslužitelj argument i poslužitelj će biti pokrenut i pokrenut na zadani priključak 8080.

4. Moduli

Bootique prijave se izrađuju s zbirkama „modula“. U Bootique‘S pojam "Modul je Java knjižnica koja sadrži neki kod" što znači da svaku uslugu tretira kao modul. Koristi Google Guice za injekciju ovisnosti.

Da bismo vidjeli kako to funkcionira, stvorimo jedno sučelje:

javno sučelje HelloService {boolean save (); }

Sada moramo stvoriti implementaciju:

javna klasa HelloServiceImpl implementira HelloService {@Override public boolean save () {return true; }}

Postoje dva načina na koja možemo učitati modul. Prva je uporaba Guice‘S Modul sučelje, a drugo je pomoću Bootique‘S BQModuleProvider koji je poznat i kao automatsko učitavanje.

4.1. Modul Guice

Ovdje možemo koristiti Guice‘S Modul sučelje za povezivanje instanci:

javna klasa ModuleBinder implementira modul {@Override public void configure (Binder binder) {binder .bind (HelloService.class) .to (HelloServiceImpl.class); }}

Jednom kada je modul definiran, moramo prilagoditi ovaj prilagođeni modul na Bootique primjer:

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

4.2. BQModuleProvider (automatsko učitavanje)

Ovdje sve što trebamo učiniti je definirati ranije stvoreni vezivni modul pomoću BQModuleProvider:

javna klasa ModuleProvider implementira BQModuleProvider {@Override javni modul modula () {return new ModuleBinder (); }}

Prednost ove tehnike je što ne trebamo mapirati nikakve podatke o modulima s Bootique primjer.

Samo trebamo stvoriti datoteku u /resources/META-INF/services/io.bootique.BQModuleProvider i napišite puno ime datoteke ModuleProvider uključujući naziv paketa i Bootique pobrinut će se za ostalo:

com.baeldung.bootique.module.ModuleProvider

Sada možemo koristiti @Ubrizgati napomena za upotrebu instanci usluge u vrijeme izvođenja:

@Inject HelloService helloService;

Jedna važna stvar koju ovdje treba napomenuti je da otkad koristimo BootiqueVlastiti DI mehanizam, ne trebamo ga koristiti Guice @ImplementedBy napomena za vezivanje instanci usluge.

5. OSTALO Krajnja točka

Jednostavno je stvoriti REST krajnje točke pomoću JAX-RS API-ja:

@Path ("/") javna klasa IndexController {@GET indeks javnog niza () {return "Zdravo, baeldung!"; } @POST javni niz save () {return "Podaci su spremljeni!"; }}

Za mapiranje krajnjih točaka u Bootique‘Svoj Dres Primjerice, moramo definirati a JerseyModule:

Modul modula = vezivo -> JerseyModule .extend (vezivo) .addResource (IndexController.class);

6. Konfiguracija

Možemo pružiti ugrađene ili prilagođene podatke o konfiguraciji u datoteci svojstava temeljenoj na YAML-u.

Na primjer, ako želimo pokrenuti aplikaciju na prilagođenom priključku i dodati zadani URI kontekst ‘zdravo’, možemo koristiti sljedeću YAML konfiguraciju:

jetty: context: / hello konektor: port: 10001

Sada, prilikom pokretanja aplikacije, moramo dati mjesto ove datoteke u parametru config:

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

7. Sječa drva

Izvan kutije Bootique dolazi s a bootique-logback modul. Da bismo koristili ovaj modul, moramo dodati sljedeću ovisnost u pom.xml:

 io.bootique.logback bootique-logback 

Ovaj modul dolazi s a BootLogger sučelje s kojim možemo nadjačati implementaciju prilagođenog zapisivanja:

Bootique.app (args) .module (module) .module (ModuleBinder.class) .bootLogger (new BootLogger () {@Napravite javni prazni prazni (argumenti dobavljača) {// ...} @Override public void stdout (String args ) {// ...} @Override public void stderr (String args, Throwable thw) {// ...} @Override public void stderr (String args) {// ...}}). AutoLoadModules (). exec ();

Također, možemo definirati podatke o konfiguraciji evidentiranja u config.yaml datoteka:

zapis: razina: upozoriti dodavače: - vrsta: zapis datotekeFormat: '% c {20}:% m% n' datoteka: /path/to/logging/dir/logger.log

8. Ispitivanje

Za testiranje, Bootique dolazi s bootique-test modul. Postoje dva načina na koja možemo testirati a Bootique primjena.

Prvi pristup je "Prvi plan" pristup koji čini da svi primeri rade na glavnoj ispitnoj niti.

Drugi je "Pozadina" pristup koji čini da se test-primeri rade na izoliranom spremištu niti.

Okruženje 'prvog plana' može se inicijalizirati pomoću BQTestFactory:

@Rule public BQTestFactory bqTestFactory = novi BQTestFactory ();

"Pozadinsko" okruženje može se inicijalizirati pomoću BQDaemonTestFactory:

@Rule public BQDaemonTestFactory bqDaemonTestFactory = new BQDaemonTestFactory ();

Nakon što tvornica zaštite okoliša bude spremna, možemo napisati jednostavne testove za testiranje usluga:

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

9. Zaključak

U ovom smo članku pokazali kako izraditi aplikaciju pomoću BootiqueOsnovni moduli. Postoji nekoliko drugih Bootique dostupni moduli poput bootique-jooq, bootique-kotlin, bootique-posaoitd. Cjelovit popis dostupnih modula dostupan je ovdje.

Kao i uvijek, puni izvorni kod dostupan je na GitHub-u.


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